rubyfit 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/ext/rubyfit/fit.c +96 -25
- data/ext/rubyfit/fit.h +127 -44
- data/ext/rubyfit/fit_config.h +7 -7
- data/ext/rubyfit/fit_convert.c +66 -13
- data/ext/rubyfit/fit_convert.h +28 -23
- data/ext/rubyfit/fit_crc.c +30 -6
- data/ext/rubyfit/fit_crc.h +12 -5
- data/ext/rubyfit/fit_example.c +899 -0
- data/ext/rubyfit/fit_example.h +3299 -0
- data/ext/rubyfit/fit_ram.c +203 -0
- data/ext/rubyfit/fit_ram.h +39 -0
- data/ext/rubyfit/rubyfit.c +25 -36
- data/lib/rubyfit/version.rb +1 -1
- metadata +14 -16
- data/ext/rubyfit/fit_product.c +0 -21
- data/ext/rubyfit/fit_product.h +0 -21
- data/ext/rubyfit/fit_sdk.c +0 -618
- data/ext/rubyfit/fit_sdk.h +0 -2083
data/ext/rubyfit/fit_sdk.h
DELETED
@@ -1,2083 +0,0 @@
|
|
1
|
-
////////////////////////////////////////////////////////////////////////////////
|
2
|
-
// The following .FIT software provided may be used with .FIT devices only and
|
3
|
-
// remains the copyrighted property of Dynastream Innovations Inc.
|
4
|
-
// The software is being provided on an "as-is" basis and as an accommodation,
|
5
|
-
// and therefore all warranties, representations, or guarantees of any kind
|
6
|
-
// (whether express, implied or statutory) including, without limitation,
|
7
|
-
// warranties of merchantability, non-infringement, or fitness for a particular
|
8
|
-
// purpose, are specifically disclaimed.
|
9
|
-
//
|
10
|
-
// Copyright 2008 Dynastream Innovations Inc.
|
11
|
-
// All rights reserved. This software may not be reproduced by any means
|
12
|
-
// without express written approval of Dynastream Innovations Inc.
|
13
|
-
////////////////////////////////////////////////////////////////////////////////
|
14
|
-
// ****WARNING**** This file is auto-generated! Do NOT edit this file.
|
15
|
-
// Profile Version = 0.62
|
16
|
-
// Product = 'SDK'
|
17
|
-
// Alignment = '4'
|
18
|
-
//////////////////////////////////////////////////////////////////////////////////
|
19
|
-
|
20
|
-
|
21
|
-
#if !defined(FIT_SDK_H)
|
22
|
-
#define FIT_SDK_H
|
23
|
-
|
24
|
-
#include "fit.h"
|
25
|
-
|
26
|
-
#if defined(__cplusplus)
|
27
|
-
extern "C" {
|
28
|
-
#endif
|
29
|
-
|
30
|
-
|
31
|
-
///////////////////////////////////////////////////////////////////////
|
32
|
-
// Version
|
33
|
-
///////////////////////////////////////////////////////////////////////
|
34
|
-
|
35
|
-
#define FIT_PROFILE_VERSION_MAJOR 0
|
36
|
-
#define FIT_PROFILE_VERSION_MINOR 62
|
37
|
-
|
38
|
-
|
39
|
-
///////////////////////////////////////////////////////////////////////
|
40
|
-
// Types
|
41
|
-
///////////////////////////////////////////////////////////////////////
|
42
|
-
|
43
|
-
typedef FIT_ENUM FIT_FILE;
|
44
|
-
#define FIT_FILE_INVALID FIT_ENUM_INVALID
|
45
|
-
#define FIT_FILE_DEVICE ((FIT_FILE)1) // Read only, single file. Must be in root directory.
|
46
|
-
#define FIT_FILE_SETTINGS ((FIT_FILE)2) // Read/write, single file. Directory=Settings
|
47
|
-
#define FIT_FILE_SPORT ((FIT_FILE)3) // Read/write, multiple files, file number = sport type. Directory=Sports
|
48
|
-
#define FIT_FILE_ACTIVITY ((FIT_FILE)4) // Read/erase, multiple files. Directory=Activities
|
49
|
-
#define FIT_FILE_WORKOUT ((FIT_FILE)5) // Read/write/erase, multiple files. Directory=Workouts
|
50
|
-
#define FIT_FILE_COURSE ((FIT_FILE)6) // Read/write/erase, multiple files. Directory=Courses
|
51
|
-
#define FIT_FILE_SCHEDULES ((FIT_FILE)7) // Read/write, single file. Directory=Schedules
|
52
|
-
#define FIT_FILE_MONITORING ((FIT_FILE)9) // Read only, single file. Circular buffer. All message definitions at start of file. Directory=Monitoring
|
53
|
-
#define FIT_FILE_TOTALS ((FIT_FILE)10) // Read only, single file. Directory=Totals
|
54
|
-
#define FIT_FILE_COUNT 9
|
55
|
-
|
56
|
-
typedef FIT_UINT16 FIT_MESG_NUM;
|
57
|
-
#define FIT_MESG_NUM_INVALID FIT_UINT16_INVALID
|
58
|
-
#define FIT_MESG_NUM_FILE_ID ((FIT_MESG_NUM)0)
|
59
|
-
#define FIT_MESG_NUM_CAPABILITIES ((FIT_MESG_NUM)1)
|
60
|
-
#define FIT_MESG_NUM_DEVICE_SETTINGS ((FIT_MESG_NUM)2)
|
61
|
-
#define FIT_MESG_NUM_USER_PROFILE ((FIT_MESG_NUM)3)
|
62
|
-
#define FIT_MESG_NUM_HRM_PROFILE ((FIT_MESG_NUM)4)
|
63
|
-
#define FIT_MESG_NUM_ZONES_TARGET ((FIT_MESG_NUM)7)
|
64
|
-
#define FIT_MESG_NUM_HR_ZONE ((FIT_MESG_NUM)8)
|
65
|
-
#define FIT_MESG_NUM_POWER_ZONE ((FIT_MESG_NUM)9)
|
66
|
-
#define FIT_MESG_NUM_MET_ZONE ((FIT_MESG_NUM)10)
|
67
|
-
#define FIT_MESG_NUM_SPORT ((FIT_MESG_NUM)12)
|
68
|
-
#define FIT_MESG_NUM_SESSION ((FIT_MESG_NUM)18)
|
69
|
-
#define FIT_MESG_NUM_LAP ((FIT_MESG_NUM)19)
|
70
|
-
#define FIT_MESG_NUM_RECORD ((FIT_MESG_NUM)20)
|
71
|
-
#define FIT_MESG_NUM_EVENT ((FIT_MESG_NUM)21)
|
72
|
-
#define FIT_MESG_NUM_DEVICE_INFO ((FIT_MESG_NUM)23)
|
73
|
-
#define FIT_MESG_NUM_WORKOUT ((FIT_MESG_NUM)26)
|
74
|
-
#define FIT_MESG_NUM_WORKOUT_STEP ((FIT_MESG_NUM)27)
|
75
|
-
#define FIT_MESG_NUM_SCHEDULE ((FIT_MESG_NUM)28)
|
76
|
-
#define FIT_MESG_NUM_WEIGHT_SCALE ((FIT_MESG_NUM)30)
|
77
|
-
#define FIT_MESG_NUM_COURSE ((FIT_MESG_NUM)31)
|
78
|
-
#define FIT_MESG_NUM_COURSE_POINT ((FIT_MESG_NUM)32)
|
79
|
-
#define FIT_MESG_NUM_TOTALS ((FIT_MESG_NUM)33)
|
80
|
-
#define FIT_MESG_NUM_ACTIVITY ((FIT_MESG_NUM)34)
|
81
|
-
#define FIT_MESG_NUM_SOFTWARE ((FIT_MESG_NUM)35)
|
82
|
-
#define FIT_MESG_NUM_FILE_CAPABILITIES ((FIT_MESG_NUM)37)
|
83
|
-
#define FIT_MESG_NUM_MESG_CAPABILITIES ((FIT_MESG_NUM)38)
|
84
|
-
#define FIT_MESG_NUM_FIELD_CAPABILITIES ((FIT_MESG_NUM)39)
|
85
|
-
#define FIT_MESG_NUM_FILE_CREATOR ((FIT_MESG_NUM)49)
|
86
|
-
#define FIT_MESG_NUM_SPEED_ZONE ((FIT_MESG_NUM)53)
|
87
|
-
#define FIT_MESG_NUM_COUNT 29
|
88
|
-
|
89
|
-
typedef FIT_UINT8Z FIT_FILE_FLAGS;
|
90
|
-
#define FIT_FILE_FLAGS_INVALID FIT_UINT8Z_INVALID
|
91
|
-
#define FIT_FILE_FLAGS_READ ((FIT_FILE_FLAGS)0x02)
|
92
|
-
#define FIT_FILE_FLAGS_WRITE ((FIT_FILE_FLAGS)0x04)
|
93
|
-
#define FIT_FILE_FLAGS_ERASE ((FIT_FILE_FLAGS)0x08)
|
94
|
-
#define FIT_FILE_FLAGS_COUNT 3
|
95
|
-
|
96
|
-
typedef FIT_ENUM FIT_MESG_COUNT;
|
97
|
-
#define FIT_MESG_COUNT_INVALID FIT_ENUM_INVALID
|
98
|
-
#define FIT_MESG_COUNT_NUM_PER_FILE ((FIT_MESG_COUNT)0)
|
99
|
-
#define FIT_MESG_COUNT_MAX_PER_FILE ((FIT_MESG_COUNT)1)
|
100
|
-
#define FIT_MESG_COUNT_MAX_PER_FILE_TYPE ((FIT_MESG_COUNT)2)
|
101
|
-
#define FIT_MESG_COUNT_COUNT 3
|
102
|
-
|
103
|
-
typedef FIT_UINT32 FIT_DATE_TIME; // seconds since UTC 00:00 Dec 31 1989
|
104
|
-
#define FIT_DATE_TIME_INVALID FIT_UINT32_INVALID
|
105
|
-
#define FIT_DATE_TIME_MIN ((FIT_DATE_TIME)0x10000000) // if date_time is < 0x10000000 then it is system time (seconds from device power on)
|
106
|
-
#define FIT_DATE_TIME_COUNT 1
|
107
|
-
|
108
|
-
typedef FIT_UINT16 FIT_MESSAGE_INDEX;
|
109
|
-
#define FIT_MESSAGE_INDEX_INVALID FIT_UINT16_INVALID
|
110
|
-
#define FIT_MESSAGE_INDEX_CURRENT ((FIT_MESSAGE_INDEX)0x8000) // message selected as current if set
|
111
|
-
#define FIT_MESSAGE_INDEX_RESERVED ((FIT_MESSAGE_INDEX)0x7000) // reserved (default 0)
|
112
|
-
#define FIT_MESSAGE_INDEX_MASK ((FIT_MESSAGE_INDEX)0x0FFF) // index
|
113
|
-
#define FIT_MESSAGE_INDEX_COUNT 3
|
114
|
-
|
115
|
-
typedef FIT_UINT8 FIT_DEVICE_INDEX;
|
116
|
-
#define FIT_DEVICE_INDEX_INVALID FIT_UINT8_INVALID
|
117
|
-
#define FIT_DEVICE_INDEX_CREATOR ((FIT_DEVICE_INDEX)0) // Creator of the file is always device index 0.
|
118
|
-
#define FIT_DEVICE_INDEX_COUNT 1
|
119
|
-
|
120
|
-
typedef FIT_ENUM FIT_GENDER;
|
121
|
-
#define FIT_GENDER_INVALID FIT_ENUM_INVALID
|
122
|
-
#define FIT_GENDER_FEMALE ((FIT_GENDER)0)
|
123
|
-
#define FIT_GENDER_MALE ((FIT_GENDER)1)
|
124
|
-
#define FIT_GENDER_COUNT 2
|
125
|
-
|
126
|
-
typedef FIT_ENUM FIT_LANGUAGE;
|
127
|
-
#define FIT_LANGUAGE_INVALID FIT_ENUM_INVALID
|
128
|
-
#define FIT_LANGUAGE_ENGLISH ((FIT_LANGUAGE)0)
|
129
|
-
#define FIT_LANGUAGE_FRENCH ((FIT_LANGUAGE)1)
|
130
|
-
#define FIT_LANGUAGE_ITALIAN ((FIT_LANGUAGE)2)
|
131
|
-
#define FIT_LANGUAGE_GERMAN ((FIT_LANGUAGE)3)
|
132
|
-
#define FIT_LANGUAGE_SPANISH ((FIT_LANGUAGE)4)
|
133
|
-
#define FIT_LANGUAGE_CROATIAN ((FIT_LANGUAGE)5)
|
134
|
-
#define FIT_LANGUAGE_CZECH ((FIT_LANGUAGE)6)
|
135
|
-
#define FIT_LANGUAGE_DANISH ((FIT_LANGUAGE)7)
|
136
|
-
#define FIT_LANGUAGE_DUTCH ((FIT_LANGUAGE)8)
|
137
|
-
#define FIT_LANGUAGE_FINNISH ((FIT_LANGUAGE)9)
|
138
|
-
#define FIT_LANGUAGE_GREEK ((FIT_LANGUAGE)10)
|
139
|
-
#define FIT_LANGUAGE_HUNGARIAN ((FIT_LANGUAGE)11)
|
140
|
-
#define FIT_LANGUAGE_NORWEGIAN ((FIT_LANGUAGE)12)
|
141
|
-
#define FIT_LANGUAGE_POLISH ((FIT_LANGUAGE)13)
|
142
|
-
#define FIT_LANGUAGE_PORTUGUESE ((FIT_LANGUAGE)14)
|
143
|
-
#define FIT_LANGUAGE_SLOVAKIAN ((FIT_LANGUAGE)15)
|
144
|
-
#define FIT_LANGUAGE_SLOVENIAN ((FIT_LANGUAGE)16)
|
145
|
-
#define FIT_LANGUAGE_SWEDISH ((FIT_LANGUAGE)17)
|
146
|
-
#define FIT_LANGUAGE_RUSSIAN ((FIT_LANGUAGE)18)
|
147
|
-
#define FIT_LANGUAGE_CUSTOM ((FIT_LANGUAGE)254)
|
148
|
-
#define FIT_LANGUAGE_COUNT 20
|
149
|
-
|
150
|
-
typedef FIT_ENUM FIT_DISPLAY_MEASURE;
|
151
|
-
#define FIT_DISPLAY_MEASURE_INVALID FIT_ENUM_INVALID
|
152
|
-
#define FIT_DISPLAY_MEASURE_METRIC ((FIT_DISPLAY_MEASURE)0)
|
153
|
-
#define FIT_DISPLAY_MEASURE_STATUTE ((FIT_DISPLAY_MEASURE)1)
|
154
|
-
#define FIT_DISPLAY_MEASURE_COUNT 2
|
155
|
-
|
156
|
-
typedef FIT_ENUM FIT_DISPLAY_HEART;
|
157
|
-
#define FIT_DISPLAY_HEART_INVALID FIT_ENUM_INVALID
|
158
|
-
#define FIT_DISPLAY_HEART_BPM ((FIT_DISPLAY_HEART)0)
|
159
|
-
#define FIT_DISPLAY_HEART_MAX ((FIT_DISPLAY_HEART)1)
|
160
|
-
#define FIT_DISPLAY_HEART_RESERVE ((FIT_DISPLAY_HEART)2)
|
161
|
-
#define FIT_DISPLAY_HEART_COUNT 3
|
162
|
-
|
163
|
-
typedef FIT_ENUM FIT_DISPLAY_POWER;
|
164
|
-
#define FIT_DISPLAY_POWER_INVALID FIT_ENUM_INVALID
|
165
|
-
#define FIT_DISPLAY_POWER_WATTS ((FIT_DISPLAY_POWER)0)
|
166
|
-
#define FIT_DISPLAY_POWER_PERCENT_FTP ((FIT_DISPLAY_POWER)1)
|
167
|
-
#define FIT_DISPLAY_POWER_COUNT 2
|
168
|
-
|
169
|
-
typedef FIT_ENUM FIT_DISPLAY_POSITION;
|
170
|
-
#define FIT_DISPLAY_POSITION_INVALID FIT_ENUM_INVALID
|
171
|
-
#define FIT_DISPLAY_POSITION_DEGREE ((FIT_DISPLAY_POSITION)0) // dd.dddddd
|
172
|
-
#define FIT_DISPLAY_POSITION_DEGREE_MINUTE ((FIT_DISPLAY_POSITION)1) // dddmm.mmm
|
173
|
-
#define FIT_DISPLAY_POSITION_DEGREE_MINUTE_SECOND ((FIT_DISPLAY_POSITION)2) // dddmmss
|
174
|
-
#define FIT_DISPLAY_POSITION_AUSTRIAN_GRID ((FIT_DISPLAY_POSITION)3) // Austrian Grid (BMN)
|
175
|
-
#define FIT_DISPLAY_POSITION_BRITISH_GRID ((FIT_DISPLAY_POSITION)4) // British National Grid
|
176
|
-
#define FIT_DISPLAY_POSITION_DUTCH_GRID ((FIT_DISPLAY_POSITION)5) // Dutch grid system
|
177
|
-
#define FIT_DISPLAY_POSITION_HUNGARIAN_GRID ((FIT_DISPLAY_POSITION)6) // Hungarian grid system
|
178
|
-
#define FIT_DISPLAY_POSITION_FINNISH_GRID ((FIT_DISPLAY_POSITION)7) // Finnish grid system Zone3 KKJ27
|
179
|
-
#define FIT_DISPLAY_POSITION_GERMAN_GRID ((FIT_DISPLAY_POSITION)8) // Gausss Krueger (German)
|
180
|
-
#define FIT_DISPLAY_POSITION_ICELANDIC_GRID ((FIT_DISPLAY_POSITION)9) // Icelandic Grid
|
181
|
-
#define FIT_DISPLAY_POSITION_INDONESIAN_EQUATORIAL ((FIT_DISPLAY_POSITION)10) // Indonesian Equatorial LCO
|
182
|
-
#define FIT_DISPLAY_POSITION_INDONESIAN_IRIAN ((FIT_DISPLAY_POSITION)11) // Indonesian Irian LCO
|
183
|
-
#define FIT_DISPLAY_POSITION_INDONESIAN_SOUTHERN ((FIT_DISPLAY_POSITION)12) // Indonesian Southern LCO
|
184
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_0 ((FIT_DISPLAY_POSITION)13) // India zone 0
|
185
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IA ((FIT_DISPLAY_POSITION)14) // India zone IA
|
186
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IB ((FIT_DISPLAY_POSITION)15) // India zone IB
|
187
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIA ((FIT_DISPLAY_POSITION)16) // India zone IIA
|
188
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIB ((FIT_DISPLAY_POSITION)17) // India zone IIB
|
189
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIIA ((FIT_DISPLAY_POSITION)18) // India zone IIIA
|
190
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIIB ((FIT_DISPLAY_POSITION)19) // India zone IIIB
|
191
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IVA ((FIT_DISPLAY_POSITION)20) // India zone IVA
|
192
|
-
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IVB ((FIT_DISPLAY_POSITION)21) // India zone IVB
|
193
|
-
#define FIT_DISPLAY_POSITION_IRISH_TRANSVERSE ((FIT_DISPLAY_POSITION)22) // Irish Transverse Mercator
|
194
|
-
#define FIT_DISPLAY_POSITION_IRISH_GRID ((FIT_DISPLAY_POSITION)23) // Irish Grid
|
195
|
-
#define FIT_DISPLAY_POSITION_LORAN ((FIT_DISPLAY_POSITION)24) // Loran TD
|
196
|
-
#define FIT_DISPLAY_POSITION_MAIDENHEAD_GRID ((FIT_DISPLAY_POSITION)25) // Maidenhead grid system
|
197
|
-
#define FIT_DISPLAY_POSITION_MGRS_GRID ((FIT_DISPLAY_POSITION)26) // MGRS grid system
|
198
|
-
#define FIT_DISPLAY_POSITION_NEW_ZEALAND_GRID ((FIT_DISPLAY_POSITION)27) // New Zealand grid system
|
199
|
-
#define FIT_DISPLAY_POSITION_NEW_ZEALAND_TRANSVERSE ((FIT_DISPLAY_POSITION)28) // New Zealand Transverse Mercator
|
200
|
-
#define FIT_DISPLAY_POSITION_QATAR_GRID ((FIT_DISPLAY_POSITION)29) // Qatar National Grid
|
201
|
-
#define FIT_DISPLAY_POSITION_MODIFIED_SWEDISH_GRID ((FIT_DISPLAY_POSITION)30) // Modified RT-90 (Sweden)
|
202
|
-
#define FIT_DISPLAY_POSITION_SWEDISH_GRID ((FIT_DISPLAY_POSITION)31) // RT-90 (Sweden)
|
203
|
-
#define FIT_DISPLAY_POSITION_SOUTH_AFRICAN_GRID ((FIT_DISPLAY_POSITION)32) // South African Grid
|
204
|
-
#define FIT_DISPLAY_POSITION_SWISS_GRID ((FIT_DISPLAY_POSITION)33) // Swiss CH-1903 grid
|
205
|
-
#define FIT_DISPLAY_POSITION_TAIWAN_GRID ((FIT_DISPLAY_POSITION)34) // Taiwan Grid
|
206
|
-
#define FIT_DISPLAY_POSITION_UNITED_STATES_GRID ((FIT_DISPLAY_POSITION)35) // United States National Grid
|
207
|
-
#define FIT_DISPLAY_POSITION_UTM_UPS_GRID ((FIT_DISPLAY_POSITION)36) // UTM/UPS grid system
|
208
|
-
#define FIT_DISPLAY_POSITION_WEST_MALAYAN ((FIT_DISPLAY_POSITION)37) // West Malayan RSO
|
209
|
-
#define FIT_DISPLAY_POSITION_COUNT 38
|
210
|
-
|
211
|
-
typedef FIT_ENUM FIT_SPORT;
|
212
|
-
#define FIT_SPORT_INVALID FIT_ENUM_INVALID
|
213
|
-
#define FIT_SPORT_GENERIC ((FIT_SPORT)0)
|
214
|
-
#define FIT_SPORT_RUNNING ((FIT_SPORT)1)
|
215
|
-
#define FIT_SPORT_CYCLING ((FIT_SPORT)2)
|
216
|
-
#define FIT_SPORT_TRANSITION ((FIT_SPORT)3) // Mulitsport transition
|
217
|
-
#define FIT_SPORT_FITNESS_EQUIPMENT ((FIT_SPORT)4)
|
218
|
-
#define FIT_SPORT_SWIMMING ((FIT_SPORT)5)
|
219
|
-
#define FIT_SPORT_ALL ((FIT_SPORT)254) // All is for goals only to include all sports.
|
220
|
-
#define FIT_SPORT_COUNT 7
|
221
|
-
|
222
|
-
typedef FIT_ENUM FIT_SUB_SPORT;
|
223
|
-
#define FIT_SUB_SPORT_INVALID FIT_ENUM_INVALID
|
224
|
-
#define FIT_SUB_SPORT_GENERIC ((FIT_SUB_SPORT)0)
|
225
|
-
#define FIT_SUB_SPORT_TREADMILL ((FIT_SUB_SPORT)1) // Run
|
226
|
-
#define FIT_SUB_SPORT_STREET ((FIT_SUB_SPORT)2) // Run
|
227
|
-
#define FIT_SUB_SPORT_TRAIL ((FIT_SUB_SPORT)3) // Run
|
228
|
-
#define FIT_SUB_SPORT_TRACK ((FIT_SUB_SPORT)4) // Run
|
229
|
-
#define FIT_SUB_SPORT_SPIN ((FIT_SUB_SPORT)5) // Cycling
|
230
|
-
#define FIT_SUB_SPORT_INDOOR_CYCLING ((FIT_SUB_SPORT)6) // Cycling
|
231
|
-
#define FIT_SUB_SPORT_ROAD ((FIT_SUB_SPORT)7) // Cycling
|
232
|
-
#define FIT_SUB_SPORT_MOUNTAIN ((FIT_SUB_SPORT)8) // Cycling
|
233
|
-
#define FIT_SUB_SPORT_DOWNHILL ((FIT_SUB_SPORT)9) // Cycling
|
234
|
-
#define FIT_SUB_SPORT_RECUMBENT ((FIT_SUB_SPORT)10) // Cycling
|
235
|
-
#define FIT_SUB_SPORT_CYCLOCROSS ((FIT_SUB_SPORT)11) // Cycling
|
236
|
-
#define FIT_SUB_SPORT_HAND_CYCLING ((FIT_SUB_SPORT)12) // Cycling
|
237
|
-
#define FIT_SUB_SPORT_TRACK_CYCLING ((FIT_SUB_SPORT)13) // Cycling
|
238
|
-
#define FIT_SUB_SPORT_INDOOR_ROWING ((FIT_SUB_SPORT)14) // Fitness Equipment
|
239
|
-
#define FIT_SUB_SPORT_ELLIPTICAL ((FIT_SUB_SPORT)15) // Fitness Equipment
|
240
|
-
#define FIT_SUB_SPORT_STAIR_CLIMBING ((FIT_SUB_SPORT)16) // Fitness Equipment
|
241
|
-
#define FIT_SUB_SPORT_LAP_SWIMMING ((FIT_SUB_SPORT)17) // Swimming
|
242
|
-
#define FIT_SUB_SPORT_OPEN_WATER ((FIT_SUB_SPORT)18) // Swimming
|
243
|
-
#define FIT_SUB_SPORT_ALL ((FIT_SUB_SPORT)254)
|
244
|
-
#define FIT_SUB_SPORT_COUNT 20
|
245
|
-
|
246
|
-
typedef FIT_ENUM FIT_ACTIVITY;
|
247
|
-
#define FIT_ACTIVITY_INVALID FIT_ENUM_INVALID
|
248
|
-
#define FIT_ACTIVITY_MANUAL ((FIT_ACTIVITY)0)
|
249
|
-
#define FIT_ACTIVITY_AUTO_MULTI_SPORT ((FIT_ACTIVITY)1)
|
250
|
-
#define FIT_ACTIVITY_COUNT 2
|
251
|
-
|
252
|
-
typedef FIT_ENUM FIT_INTENSITY;
|
253
|
-
#define FIT_INTENSITY_INVALID FIT_ENUM_INVALID
|
254
|
-
#define FIT_INTENSITY_ACTIVE ((FIT_INTENSITY)0)
|
255
|
-
#define FIT_INTENSITY_REST ((FIT_INTENSITY)1)
|
256
|
-
#define FIT_INTENSITY_WARMUP ((FIT_INTENSITY)2)
|
257
|
-
#define FIT_INTENSITY_COOLDOWN ((FIT_INTENSITY)3)
|
258
|
-
#define FIT_INTENSITY_COUNT 4
|
259
|
-
|
260
|
-
typedef FIT_ENUM FIT_SESSION_TRIGGER;
|
261
|
-
#define FIT_SESSION_TRIGGER_INVALID FIT_ENUM_INVALID
|
262
|
-
#define FIT_SESSION_TRIGGER_ACTIVITY_END ((FIT_SESSION_TRIGGER)0)
|
263
|
-
#define FIT_SESSION_TRIGGER_MANUAL ((FIT_SESSION_TRIGGER)1) // User changed sport.
|
264
|
-
#define FIT_SESSION_TRIGGER_AUTO_MULTI_SPORT ((FIT_SESSION_TRIGGER)2) // Auto multi-sport feature is enabled and user pressed lap button to advance session.
|
265
|
-
#define FIT_SESSION_TRIGGER_FITNESS_EQUIPMENT ((FIT_SESSION_TRIGGER)3) // Auto sport change caused by user linking to fitness equipment.
|
266
|
-
#define FIT_SESSION_TRIGGER_COUNT 4
|
267
|
-
|
268
|
-
typedef FIT_ENUM FIT_LAP_TRIGGER;
|
269
|
-
#define FIT_LAP_TRIGGER_INVALID FIT_ENUM_INVALID
|
270
|
-
#define FIT_LAP_TRIGGER_MANUAL ((FIT_LAP_TRIGGER)0)
|
271
|
-
#define FIT_LAP_TRIGGER_TIME ((FIT_LAP_TRIGGER)1)
|
272
|
-
#define FIT_LAP_TRIGGER_DISTANCE ((FIT_LAP_TRIGGER)2)
|
273
|
-
#define FIT_LAP_TRIGGER_POSITION_START ((FIT_LAP_TRIGGER)3)
|
274
|
-
#define FIT_LAP_TRIGGER_POSITION_LAP ((FIT_LAP_TRIGGER)4)
|
275
|
-
#define FIT_LAP_TRIGGER_POSITION_WAYPOINT ((FIT_LAP_TRIGGER)5)
|
276
|
-
#define FIT_LAP_TRIGGER_POSITION_MARKED ((FIT_LAP_TRIGGER)6)
|
277
|
-
#define FIT_LAP_TRIGGER_SESSION_END ((FIT_LAP_TRIGGER)7)
|
278
|
-
#define FIT_LAP_TRIGGER_FITNESS_EQUIPMENT ((FIT_LAP_TRIGGER)8)
|
279
|
-
#define FIT_LAP_TRIGGER_COUNT 9
|
280
|
-
|
281
|
-
typedef FIT_ENUM FIT_EVENT;
|
282
|
-
#define FIT_EVENT_INVALID FIT_ENUM_INVALID
|
283
|
-
#define FIT_EVENT_TIMER ((FIT_EVENT)0) // Group 0. Start / stop_all
|
284
|
-
#define FIT_EVENT_WORKOUT ((FIT_EVENT)3) // start / stop
|
285
|
-
#define FIT_EVENT_WORKOUT_STEP ((FIT_EVENT)4) // Start at beginning of workout. Stop at end of each step.
|
286
|
-
#define FIT_EVENT_POWER_DOWN ((FIT_EVENT)5) // stop_all group 0
|
287
|
-
#define FIT_EVENT_POWER_UP ((FIT_EVENT)6) // stop_all group 0
|
288
|
-
#define FIT_EVENT_OFF_COURSE ((FIT_EVENT)7) // start / stop group 0
|
289
|
-
#define FIT_EVENT_SESSION ((FIT_EVENT)8) // Stop at end of each session.
|
290
|
-
#define FIT_EVENT_LAP ((FIT_EVENT)9) // Stop at end of each lap.
|
291
|
-
#define FIT_EVENT_COURSE_POINT ((FIT_EVENT)10) // marker
|
292
|
-
#define FIT_EVENT_BATTERY ((FIT_EVENT)11) // marker
|
293
|
-
#define FIT_EVENT_VIRTUAL_PARTNER_PACE ((FIT_EVENT)12) // Group 1. Start at beginning of activity if VP enabled, when VP pace is changed during activity or VP enabled mid activity. stop_disable when VP disabled.
|
294
|
-
#define FIT_EVENT_HR_HIGH_ALERT ((FIT_EVENT)13) // Group 0. Start / stop when in alert condition.
|
295
|
-
#define FIT_EVENT_HR_LOW_ALERT ((FIT_EVENT)14) // Group 0. Start / stop when in alert condition.
|
296
|
-
#define FIT_EVENT_SPEED_HIGH_ALERT ((FIT_EVENT)15) // Group 0. Start / stop when in alert condition.
|
297
|
-
#define FIT_EVENT_SPEED_LOW_ALERT ((FIT_EVENT)16) // Group 0. Start / stop when in alert condition.
|
298
|
-
#define FIT_EVENT_CAD_HIGH_ALERT ((FIT_EVENT)17) // Group 0. Start / stop when in alert condition.
|
299
|
-
#define FIT_EVENT_CAD_LOW_ALERT ((FIT_EVENT)18) // Group 0. Start / stop when in alert condition.
|
300
|
-
#define FIT_EVENT_POWER_HIGH_ALERT ((FIT_EVENT)19) // Group 0. Start / stop when in alert condition.
|
301
|
-
#define FIT_EVENT_POWER_LOW_ALERT ((FIT_EVENT)20) // Group 0. Start / stop when in alert condition.
|
302
|
-
#define FIT_EVENT_RECOVERY_HR ((FIT_EVENT)21) // marker
|
303
|
-
#define FIT_EVENT_BATTERY_LOW ((FIT_EVENT)22) // marker
|
304
|
-
#define FIT_EVENT_TIME_DURATION_ALERT ((FIT_EVENT)23) // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
|
305
|
-
#define FIT_EVENT_DISTANCE_DURATION_ALERT ((FIT_EVENT)24) // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
|
306
|
-
#define FIT_EVENT_CALORIE_DURATION_ALERT ((FIT_EVENT)25) // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
|
307
|
-
#define FIT_EVENT_ACTIVITY ((FIT_EVENT)26) // Group 1.. Stop at end of activity.
|
308
|
-
#define FIT_EVENT_FITNESS_EQUIPMENT ((FIT_EVENT)27) // marker
|
309
|
-
#define FIT_EVENT_COUNT 26
|
310
|
-
|
311
|
-
typedef FIT_ENUM FIT_EVENT_TYPE;
|
312
|
-
#define FIT_EVENT_TYPE_INVALID FIT_ENUM_INVALID
|
313
|
-
#define FIT_EVENT_TYPE_START ((FIT_EVENT_TYPE)0)
|
314
|
-
#define FIT_EVENT_TYPE_STOP ((FIT_EVENT_TYPE)1)
|
315
|
-
#define FIT_EVENT_TYPE_CONSECUTIVE_DEPRECIATED ((FIT_EVENT_TYPE)2)
|
316
|
-
#define FIT_EVENT_TYPE_MARKER ((FIT_EVENT_TYPE)3)
|
317
|
-
#define FIT_EVENT_TYPE_STOP_ALL ((FIT_EVENT_TYPE)4)
|
318
|
-
#define FIT_EVENT_TYPE_BEGIN_DEPRECIATED ((FIT_EVENT_TYPE)5)
|
319
|
-
#define FIT_EVENT_TYPE_END_DEPRECIATED ((FIT_EVENT_TYPE)6)
|
320
|
-
#define FIT_EVENT_TYPE_END_ALL_DEPRECIATED ((FIT_EVENT_TYPE)7)
|
321
|
-
#define FIT_EVENT_TYPE_STOP_DISABLE ((FIT_EVENT_TYPE)8)
|
322
|
-
#define FIT_EVENT_TYPE_STOP_DISABLE_ALL ((FIT_EVENT_TYPE)9)
|
323
|
-
#define FIT_EVENT_TYPE_COUNT 10
|
324
|
-
|
325
|
-
typedef FIT_ENUM FIT_TIMER_TRIGGER; // timer event data
|
326
|
-
#define FIT_TIMER_TRIGGER_INVALID FIT_ENUM_INVALID
|
327
|
-
#define FIT_TIMER_TRIGGER_MANUAL ((FIT_TIMER_TRIGGER)0)
|
328
|
-
#define FIT_TIMER_TRIGGER_AUTO ((FIT_TIMER_TRIGGER)1)
|
329
|
-
#define FIT_TIMER_TRIGGER_FITNESS_EQUIPMENT ((FIT_TIMER_TRIGGER)2)
|
330
|
-
#define FIT_TIMER_TRIGGER_COUNT 3
|
331
|
-
|
332
|
-
typedef FIT_ENUM FIT_FITNESS_EQUIPMENT_STATE; // fitness equipment event data
|
333
|
-
#define FIT_FITNESS_EQUIPMENT_STATE_INVALID FIT_ENUM_INVALID
|
334
|
-
#define FIT_FITNESS_EQUIPMENT_STATE_READY ((FIT_FITNESS_EQUIPMENT_STATE)0)
|
335
|
-
#define FIT_FITNESS_EQUIPMENT_STATE_IN_USE ((FIT_FITNESS_EQUIPMENT_STATE)1)
|
336
|
-
#define FIT_FITNESS_EQUIPMENT_STATE_PAUSED ((FIT_FITNESS_EQUIPMENT_STATE)2)
|
337
|
-
#define FIT_FITNESS_EQUIPMENT_STATE_UNKNOWN ((FIT_FITNESS_EQUIPMENT_STATE)3) // lost connection to fitness equipment
|
338
|
-
#define FIT_FITNESS_EQUIPMENT_STATE_COUNT 4
|
339
|
-
|
340
|
-
typedef FIT_ENUM FIT_ACTIVITY_CLASS;
|
341
|
-
#define FIT_ACTIVITY_CLASS_INVALID FIT_ENUM_INVALID
|
342
|
-
#define FIT_ACTIVITY_CLASS_LEVEL ((FIT_ACTIVITY_CLASS)0x7F) // 0 to 100
|
343
|
-
#define FIT_ACTIVITY_CLASS_LEVEL_MAX ((FIT_ACTIVITY_CLASS)100)
|
344
|
-
#define FIT_ACTIVITY_CLASS_ATHLETE ((FIT_ACTIVITY_CLASS)0x80)
|
345
|
-
#define FIT_ACTIVITY_CLASS_COUNT 3
|
346
|
-
|
347
|
-
typedef FIT_ENUM FIT_HR_ZONE_CALC;
|
348
|
-
#define FIT_HR_ZONE_CALC_INVALID FIT_ENUM_INVALID
|
349
|
-
#define FIT_HR_ZONE_CALC_CUSTOM ((FIT_HR_ZONE_CALC)0)
|
350
|
-
#define FIT_HR_ZONE_CALC_PERCENT_MAX_HR ((FIT_HR_ZONE_CALC)1)
|
351
|
-
#define FIT_HR_ZONE_CALC_PERCENT_HRR ((FIT_HR_ZONE_CALC)2)
|
352
|
-
#define FIT_HR_ZONE_CALC_COUNT 3
|
353
|
-
|
354
|
-
typedef FIT_ENUM FIT_PWR_ZONE_CALC;
|
355
|
-
#define FIT_PWR_ZONE_CALC_INVALID FIT_ENUM_INVALID
|
356
|
-
#define FIT_PWR_ZONE_CALC_CUSTOM ((FIT_PWR_ZONE_CALC)0)
|
357
|
-
#define FIT_PWR_ZONE_CALC_PERCENT_FTP ((FIT_PWR_ZONE_CALC)1)
|
358
|
-
#define FIT_PWR_ZONE_CALC_COUNT 2
|
359
|
-
|
360
|
-
typedef FIT_ENUM FIT_WKT_STEP_DURATION;
|
361
|
-
#define FIT_WKT_STEP_DURATION_INVALID FIT_ENUM_INVALID
|
362
|
-
#define FIT_WKT_STEP_DURATION_TIME ((FIT_WKT_STEP_DURATION)0)
|
363
|
-
#define FIT_WKT_STEP_DURATION_DISTANCE ((FIT_WKT_STEP_DURATION)1)
|
364
|
-
#define FIT_WKT_STEP_DURATION_HR_LESS_THAN ((FIT_WKT_STEP_DURATION)2)
|
365
|
-
#define FIT_WKT_STEP_DURATION_HR_GREATER_THAN ((FIT_WKT_STEP_DURATION)3)
|
366
|
-
#define FIT_WKT_STEP_DURATION_CALORIES ((FIT_WKT_STEP_DURATION)4)
|
367
|
-
#define FIT_WKT_STEP_DURATION_OPEN ((FIT_WKT_STEP_DURATION)5)
|
368
|
-
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_STEPS_CMPLT ((FIT_WKT_STEP_DURATION)6)
|
369
|
-
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_TIME ((FIT_WKT_STEP_DURATION)7)
|
370
|
-
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_DISTANCE ((FIT_WKT_STEP_DURATION)8)
|
371
|
-
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_CALORIES ((FIT_WKT_STEP_DURATION)9)
|
372
|
-
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_HR_LESS_THAN ((FIT_WKT_STEP_DURATION)10)
|
373
|
-
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_HR_GREATER_THAN ((FIT_WKT_STEP_DURATION)11)
|
374
|
-
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_LESS_THAN ((FIT_WKT_STEP_DURATION)12)
|
375
|
-
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_GREATER_THAN ((FIT_WKT_STEP_DURATION)13)
|
376
|
-
#define FIT_WKT_STEP_DURATION_POWER_LESS_THAN ((FIT_WKT_STEP_DURATION)14)
|
377
|
-
#define FIT_WKT_STEP_DURATION_POWER_GREATER_THAN ((FIT_WKT_STEP_DURATION)15)
|
378
|
-
#define FIT_WKT_STEP_DURATION_COUNT 16
|
379
|
-
|
380
|
-
typedef FIT_ENUM FIT_WKT_STEP_TARGET;
|
381
|
-
#define FIT_WKT_STEP_TARGET_INVALID FIT_ENUM_INVALID
|
382
|
-
#define FIT_WKT_STEP_TARGET_SPEED ((FIT_WKT_STEP_TARGET)0)
|
383
|
-
#define FIT_WKT_STEP_TARGET_HEART_RATE ((FIT_WKT_STEP_TARGET)1)
|
384
|
-
#define FIT_WKT_STEP_TARGET_OPEN ((FIT_WKT_STEP_TARGET)2)
|
385
|
-
#define FIT_WKT_STEP_TARGET_CADENCE ((FIT_WKT_STEP_TARGET)3)
|
386
|
-
#define FIT_WKT_STEP_TARGET_POWER ((FIT_WKT_STEP_TARGET)4)
|
387
|
-
#define FIT_WKT_STEP_TARGET_GRADE ((FIT_WKT_STEP_TARGET)5)
|
388
|
-
#define FIT_WKT_STEP_TARGET_RESISTANCE ((FIT_WKT_STEP_TARGET)6)
|
389
|
-
#define FIT_WKT_STEP_TARGET_COUNT 7
|
390
|
-
|
391
|
-
typedef FIT_ENUM FIT_SCHEDULE;
|
392
|
-
#define FIT_SCHEDULE_INVALID FIT_ENUM_INVALID
|
393
|
-
#define FIT_SCHEDULE_WORKOUT ((FIT_SCHEDULE)0)
|
394
|
-
#define FIT_SCHEDULE_COURSE ((FIT_SCHEDULE)1)
|
395
|
-
#define FIT_SCHEDULE_COUNT 2
|
396
|
-
|
397
|
-
typedef FIT_ENUM FIT_COURSE_POINT;
|
398
|
-
#define FIT_COURSE_POINT_INVALID FIT_ENUM_INVALID
|
399
|
-
#define FIT_COURSE_POINT_GENERIC ((FIT_COURSE_POINT)0)
|
400
|
-
#define FIT_COURSE_POINT_SUMMIT ((FIT_COURSE_POINT)1)
|
401
|
-
#define FIT_COURSE_POINT_VALLEY ((FIT_COURSE_POINT)2)
|
402
|
-
#define FIT_COURSE_POINT_WATER ((FIT_COURSE_POINT)3)
|
403
|
-
#define FIT_COURSE_POINT_FOOD ((FIT_COURSE_POINT)4)
|
404
|
-
#define FIT_COURSE_POINT_DANGER ((FIT_COURSE_POINT)5)
|
405
|
-
#define FIT_COURSE_POINT_LEFT ((FIT_COURSE_POINT)6)
|
406
|
-
#define FIT_COURSE_POINT_RIGHT ((FIT_COURSE_POINT)7)
|
407
|
-
#define FIT_COURSE_POINT_STRAIGHT ((FIT_COURSE_POINT)8)
|
408
|
-
#define FIT_COURSE_POINT_FIRST_AID ((FIT_COURSE_POINT)9)
|
409
|
-
#define FIT_COURSE_POINT_FOURTH_CATEGORY ((FIT_COURSE_POINT)10)
|
410
|
-
#define FIT_COURSE_POINT_THIRD_CATEGORY ((FIT_COURSE_POINT)11)
|
411
|
-
#define FIT_COURSE_POINT_SECOND_CATEGORY ((FIT_COURSE_POINT)12)
|
412
|
-
#define FIT_COURSE_POINT_FIRST_CATEGORY ((FIT_COURSE_POINT)13)
|
413
|
-
#define FIT_COURSE_POINT_HORS_CATEGORY ((FIT_COURSE_POINT)14)
|
414
|
-
#define FIT_COURSE_POINT_SPRINT ((FIT_COURSE_POINT)15)
|
415
|
-
#define FIT_COURSE_POINT_LEFT_FORK ((FIT_COURSE_POINT)16)
|
416
|
-
#define FIT_COURSE_POINT_RIGHT_FORK ((FIT_COURSE_POINT)17)
|
417
|
-
#define FIT_COURSE_POINT_MIDDLE_FORK ((FIT_COURSE_POINT)18)
|
418
|
-
#define FIT_COURSE_POINT_COUNT 19
|
419
|
-
|
420
|
-
typedef FIT_UINT16 FIT_MANUFACTURER;
|
421
|
-
#define FIT_MANUFACTURER_INVALID FIT_UINT16_INVALID
|
422
|
-
#define FIT_MANUFACTURER_GARMIN ((FIT_MANUFACTURER)1)
|
423
|
-
#define FIT_MANUFACTURER_GARMIN_FR405_ANTFS ((FIT_MANUFACTURER)2) // Do not use. Used by FR405 for ANTFS man id.
|
424
|
-
#define FIT_MANUFACTURER_ZEPHYR ((FIT_MANUFACTURER)3)
|
425
|
-
#define FIT_MANUFACTURER_DAYTON ((FIT_MANUFACTURER)4)
|
426
|
-
#define FIT_MANUFACTURER_IDT ((FIT_MANUFACTURER)5)
|
427
|
-
#define FIT_MANUFACTURER_SRM ((FIT_MANUFACTURER)6)
|
428
|
-
#define FIT_MANUFACTURER_QUARQ ((FIT_MANUFACTURER)7)
|
429
|
-
#define FIT_MANUFACTURER_IBIKE ((FIT_MANUFACTURER)8)
|
430
|
-
#define FIT_MANUFACTURER_SARIS ((FIT_MANUFACTURER)9)
|
431
|
-
#define FIT_MANUFACTURER_SPARK_HK ((FIT_MANUFACTURER)10)
|
432
|
-
#define FIT_MANUFACTURER_TANITA ((FIT_MANUFACTURER)11)
|
433
|
-
#define FIT_MANUFACTURER_ECHOWELL ((FIT_MANUFACTURER)12)
|
434
|
-
#define FIT_MANUFACTURER_DYNASTREAM_OEM ((FIT_MANUFACTURER)13)
|
435
|
-
#define FIT_MANUFACTURER_NAUTILUS ((FIT_MANUFACTURER)14)
|
436
|
-
#define FIT_MANUFACTURER_DYNASTREAM ((FIT_MANUFACTURER)15)
|
437
|
-
#define FIT_MANUFACTURER_COUNT 15
|
438
|
-
|
439
|
-
typedef FIT_UINT16 FIT_GARMIN_PRODUCT;
|
440
|
-
#define FIT_GARMIN_PRODUCT_INVALID FIT_UINT16_INVALID
|
441
|
-
#define FIT_GARMIN_PRODUCT_HRM_BIKE ((FIT_GARMIN_PRODUCT)0) // 0-255 reserved for HRM / Bike devices with 1 byte product id.
|
442
|
-
#define FIT_GARMIN_PRODUCT_HRM1 ((FIT_GARMIN_PRODUCT)1)
|
443
|
-
#define FIT_GARMIN_PRODUCT_AXH01 ((FIT_GARMIN_PRODUCT)2) // AXH01 HRM chipset
|
444
|
-
#define FIT_GARMIN_PRODUCT_AXB01 ((FIT_GARMIN_PRODUCT)3)
|
445
|
-
#define FIT_GARMIN_PRODUCT_AXB02 ((FIT_GARMIN_PRODUCT)4)
|
446
|
-
#define FIT_GARMIN_PRODUCT_HRM2SS ((FIT_GARMIN_PRODUCT)5)
|
447
|
-
#define FIT_GARMIN_PRODUCT_FR405 ((FIT_GARMIN_PRODUCT)717) // Forerunner 405
|
448
|
-
#define FIT_GARMIN_PRODUCT_FR50 ((FIT_GARMIN_PRODUCT)782) // Forerunner 50
|
449
|
-
#define FIT_GARMIN_PRODUCT_FR60 ((FIT_GARMIN_PRODUCT)988) // Forerunner 60
|
450
|
-
#define FIT_GARMIN_PRODUCT_FR310XT ((FIT_GARMIN_PRODUCT)1018) // Forerunner 310
|
451
|
-
#define FIT_GARMIN_PRODUCT_EDGE500 ((FIT_GARMIN_PRODUCT)1036)
|
452
|
-
#define FIT_GARMIN_PRODUCT_SDM4 ((FIT_GARMIN_PRODUCT)10007) // SDM4 footpod
|
453
|
-
#define FIT_GARMIN_PRODUCT_TRAINING_CENTER ((FIT_GARMIN_PRODUCT)20119)
|
454
|
-
#define FIT_GARMIN_PRODUCT_CONNECT ((FIT_GARMIN_PRODUCT)65534) // Garmin Connect website
|
455
|
-
#define FIT_GARMIN_PRODUCT_COUNT 14
|
456
|
-
|
457
|
-
typedef FIT_UINT8 FIT_DEVICE_TYPE;
|
458
|
-
#define FIT_DEVICE_TYPE_INVALID FIT_UINT8_INVALID
|
459
|
-
#define FIT_DEVICE_TYPE_ANTFS ((FIT_DEVICE_TYPE)1)
|
460
|
-
#define FIT_DEVICE_TYPE_BIKE_POWER ((FIT_DEVICE_TYPE)11)
|
461
|
-
#define FIT_DEVICE_TYPE_ENVIRONMENT_SENSOR ((FIT_DEVICE_TYPE)12)
|
462
|
-
#define FIT_DEVICE_TYPE_FITNESS_EQUIPMENT ((FIT_DEVICE_TYPE)17)
|
463
|
-
#define FIT_DEVICE_TYPE_WEIGHT_SCALE ((FIT_DEVICE_TYPE)119)
|
464
|
-
#define FIT_DEVICE_TYPE_HRM ((FIT_DEVICE_TYPE)120)
|
465
|
-
#define FIT_DEVICE_TYPE_BIKE_SPEED_CADENCE ((FIT_DEVICE_TYPE)121)
|
466
|
-
#define FIT_DEVICE_TYPE_BIKE_CADENCE ((FIT_DEVICE_TYPE)122)
|
467
|
-
#define FIT_DEVICE_TYPE_BIKE_SPEED ((FIT_DEVICE_TYPE)123)
|
468
|
-
#define FIT_DEVICE_TYPE_SDM ((FIT_DEVICE_TYPE)124)
|
469
|
-
#define FIT_DEVICE_TYPE_COUNT 10
|
470
|
-
|
471
|
-
typedef FIT_UINT32Z FIT_WORKOUT_CAPABILITIES;
|
472
|
-
#define FIT_WORKOUT_CAPABILITIES_INVALID FIT_UINT32Z_INVALID
|
473
|
-
#define FIT_WORKOUT_CAPABILITIES_INTERVAL ((FIT_WORKOUT_CAPABILITIES)0x00000001)
|
474
|
-
#define FIT_WORKOUT_CAPABILITIES_CUSTOM ((FIT_WORKOUT_CAPABILITIES)0x00000002)
|
475
|
-
#define FIT_WORKOUT_CAPABILITIES_FITNESS_EQUIPMENT ((FIT_WORKOUT_CAPABILITIES)0x00000004)
|
476
|
-
#define FIT_WORKOUT_CAPABILITIES_FIRSTBEAT ((FIT_WORKOUT_CAPABILITIES)0x00000008)
|
477
|
-
#define FIT_WORKOUT_CAPABILITIES_NEW_LEAF ((FIT_WORKOUT_CAPABILITIES)0x00000010)
|
478
|
-
#define FIT_WORKOUT_CAPABILITIES_TCX ((FIT_WORKOUT_CAPABILITIES)0x00000020) // For backwards compatibility. Watch should add missing id fields then clear flag.
|
479
|
-
#define FIT_WORKOUT_CAPABILITIES_SPEED ((FIT_WORKOUT_CAPABILITIES)0x00000080) // Speed source required for workout step.
|
480
|
-
#define FIT_WORKOUT_CAPABILITIES_HEART_RATE ((FIT_WORKOUT_CAPABILITIES)0x00000100) // Heart rate source required for workout step.
|
481
|
-
#define FIT_WORKOUT_CAPABILITIES_DISTANCE ((FIT_WORKOUT_CAPABILITIES)0x00000200) // Distance source required for workout step.
|
482
|
-
#define FIT_WORKOUT_CAPABILITIES_CADENCE ((FIT_WORKOUT_CAPABILITIES)0x00000400) // Cadence source required for workout step.
|
483
|
-
#define FIT_WORKOUT_CAPABILITIES_POWER ((FIT_WORKOUT_CAPABILITIES)0x00000800) // Power source required for workout step.
|
484
|
-
#define FIT_WORKOUT_CAPABILITIES_GRADE ((FIT_WORKOUT_CAPABILITIES)0x00001000) // Grade source required for workout step.
|
485
|
-
#define FIT_WORKOUT_CAPABILITIES_RESISTANCE ((FIT_WORKOUT_CAPABILITIES)0x00002000) // Resistance source required for workout step.
|
486
|
-
#define FIT_WORKOUT_CAPABILITIES_PROTECTED ((FIT_WORKOUT_CAPABILITIES)0x00004000)
|
487
|
-
#define FIT_WORKOUT_CAPABILITIES_COUNT 14
|
488
|
-
|
489
|
-
typedef FIT_UINT8 FIT_BATTERY_STATUS;
|
490
|
-
#define FIT_BATTERY_STATUS_INVALID FIT_UINT8_INVALID
|
491
|
-
#define FIT_BATTERY_STATUS_NEW ((FIT_BATTERY_STATUS)1)
|
492
|
-
#define FIT_BATTERY_STATUS_GOOD ((FIT_BATTERY_STATUS)2)
|
493
|
-
#define FIT_BATTERY_STATUS_OK ((FIT_BATTERY_STATUS)3)
|
494
|
-
#define FIT_BATTERY_STATUS_LOW ((FIT_BATTERY_STATUS)4)
|
495
|
-
#define FIT_BATTERY_STATUS_CRITICAL ((FIT_BATTERY_STATUS)5)
|
496
|
-
#define FIT_BATTERY_STATUS_COUNT 5
|
497
|
-
|
498
|
-
typedef FIT_UINT32Z FIT_COURSE_CAPABILITIES;
|
499
|
-
#define FIT_COURSE_CAPABILITIES_INVALID FIT_UINT32Z_INVALID
|
500
|
-
#define FIT_COURSE_CAPABILITIES_PROCESSED ((FIT_COURSE_CAPABILITIES)0x00000001)
|
501
|
-
#define FIT_COURSE_CAPABILITIES_VALID ((FIT_COURSE_CAPABILITIES)0x00000002)
|
502
|
-
#define FIT_COURSE_CAPABILITIES_TIME ((FIT_COURSE_CAPABILITIES)0x00000004)
|
503
|
-
#define FIT_COURSE_CAPABILITIES_DISTANCE ((FIT_COURSE_CAPABILITIES)0x00000008)
|
504
|
-
#define FIT_COURSE_CAPABILITIES_POSITION ((FIT_COURSE_CAPABILITIES)0x00000010)
|
505
|
-
#define FIT_COURSE_CAPABILITIES_HEART_RATE ((FIT_COURSE_CAPABILITIES)0x00000020)
|
506
|
-
#define FIT_COURSE_CAPABILITIES_POWER ((FIT_COURSE_CAPABILITIES)0x00000040)
|
507
|
-
#define FIT_COURSE_CAPABILITIES_CADENCE ((FIT_COURSE_CAPABILITIES)0x00000080)
|
508
|
-
#define FIT_COURSE_CAPABILITIES_COUNT 8
|
509
|
-
|
510
|
-
typedef FIT_UINT16 FIT_WEIGHT;
|
511
|
-
#define FIT_WEIGHT_INVALID FIT_UINT16_INVALID
|
512
|
-
#define FIT_WEIGHT_CALCULATING ((FIT_WEIGHT)0xFFFE)
|
513
|
-
#define FIT_WEIGHT_COUNT 1
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
///////////////////////////////////////////////////////////////////////
|
518
|
-
// Message Conversion Structures
|
519
|
-
///////////////////////////////////////////////////////////////////////
|
520
|
-
|
521
|
-
typedef struct
|
522
|
-
{
|
523
|
-
FIT_UINT8 base_type;
|
524
|
-
FIT_UINT8 offset_in;
|
525
|
-
FIT_UINT8 offset_local;
|
526
|
-
FIT_UINT8 size;
|
527
|
-
} FIT_FIELD_CONVERT;
|
528
|
-
|
529
|
-
typedef struct
|
530
|
-
{
|
531
|
-
FIT_UINT8 reserved_1;
|
532
|
-
FIT_UINT8 arch;
|
533
|
-
FIT_MESG_NUM global_mesg_num;
|
534
|
-
FIT_UINT8 num_fields;
|
535
|
-
FIT_FIELD_CONVERT fields[34];
|
536
|
-
} FIT_MESG_CONVERT;
|
537
|
-
|
538
|
-
|
539
|
-
///////////////////////////////////////////////////////////////////////
|
540
|
-
// Messages
|
541
|
-
///////////////////////////////////////////////////////////////////////
|
542
|
-
|
543
|
-
#define FIT_MESG_SIZE 84
|
544
|
-
#define FIT_MESG_DEF_SIZE 107
|
545
|
-
|
546
|
-
|
547
|
-
typedef struct
|
548
|
-
{
|
549
|
-
FIT_UINT32Z serial_number; //
|
550
|
-
FIT_DATE_TIME time_created; // Only set for files that are can be created/erased.
|
551
|
-
FIT_MANUFACTURER manufacturer; //
|
552
|
-
FIT_UINT16 product; //
|
553
|
-
FIT_UINT16 number; // Only set for files that are not created/erased.
|
554
|
-
FIT_FILE type; //
|
555
|
-
} FIT_FILE_ID_MESG;
|
556
|
-
|
557
|
-
#define FIT_FILE_ID_MESG_SIZE 15
|
558
|
-
|
559
|
-
typedef enum
|
560
|
-
{
|
561
|
-
FIT_FILE_ID_FIELD_NUM_SERIAL_NUMBER = 3,
|
562
|
-
FIT_FILE_ID_FIELD_NUM_TIME_CREATED = 4,
|
563
|
-
FIT_FILE_ID_FIELD_NUM_MANUFACTURER = 1,
|
564
|
-
FIT_FILE_ID_FIELD_NUM_PRODUCT = 2,
|
565
|
-
FIT_FILE_ID_FIELD_NUM_NUMBER = 5,
|
566
|
-
FIT_FILE_ID_FIELD_NUM_TYPE = 0
|
567
|
-
} FIT_FILE_ID_FIELD_NUM;
|
568
|
-
|
569
|
-
typedef enum
|
570
|
-
{
|
571
|
-
FIT_FILE_ID_MESG_SERIAL_NUMBER,
|
572
|
-
FIT_FILE_ID_MESG_TIME_CREATED,
|
573
|
-
FIT_FILE_ID_MESG_MANUFACTURER,
|
574
|
-
FIT_FILE_ID_MESG_PRODUCT,
|
575
|
-
FIT_FILE_ID_MESG_NUMBER,
|
576
|
-
FIT_FILE_ID_MESG_TYPE,
|
577
|
-
FIT_FILE_ID_MESG_FIELDS
|
578
|
-
} FIT_FILE_ID_MESG_FIELD;
|
579
|
-
|
580
|
-
typedef struct
|
581
|
-
{
|
582
|
-
FIT_UINT8 reserved_1;
|
583
|
-
FIT_UINT8 arch;
|
584
|
-
FIT_MESG_NUM global_mesg_num;
|
585
|
-
FIT_UINT8 num_fields;
|
586
|
-
FIT_UINT8 fields[FIT_FILE_ID_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
587
|
-
} FIT_FILE_ID_MESG_DEF;
|
588
|
-
|
589
|
-
#define FIT_FILE_ID_MESG_DEF_SIZE 23
|
590
|
-
|
591
|
-
|
592
|
-
typedef struct
|
593
|
-
{
|
594
|
-
FIT_UINT16 software_version; //
|
595
|
-
FIT_UINT8 hardware_version; //
|
596
|
-
} FIT_FILE_CREATOR_MESG;
|
597
|
-
|
598
|
-
#define FIT_FILE_CREATOR_MESG_SIZE 3
|
599
|
-
|
600
|
-
typedef enum
|
601
|
-
{
|
602
|
-
FIT_FILE_CREATOR_FIELD_NUM_SOFTWARE_VERSION = 0,
|
603
|
-
FIT_FILE_CREATOR_FIELD_NUM_HARDWARE_VERSION = 1
|
604
|
-
} FIT_FILE_CREATOR_FIELD_NUM;
|
605
|
-
|
606
|
-
typedef enum
|
607
|
-
{
|
608
|
-
FIT_FILE_CREATOR_MESG_SOFTWARE_VERSION,
|
609
|
-
FIT_FILE_CREATOR_MESG_HARDWARE_VERSION,
|
610
|
-
FIT_FILE_CREATOR_MESG_FIELDS
|
611
|
-
} FIT_FILE_CREATOR_MESG_FIELD;
|
612
|
-
|
613
|
-
typedef struct
|
614
|
-
{
|
615
|
-
FIT_UINT8 reserved_1;
|
616
|
-
FIT_UINT8 arch;
|
617
|
-
FIT_MESG_NUM global_mesg_num;
|
618
|
-
FIT_UINT8 num_fields;
|
619
|
-
FIT_UINT8 fields[FIT_FILE_CREATOR_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
620
|
-
} FIT_FILE_CREATOR_MESG_DEF;
|
621
|
-
|
622
|
-
#define FIT_FILE_CREATOR_MESG_DEF_SIZE 11
|
623
|
-
|
624
|
-
#define FIT_SOFTWARE_MESG_PART_NUMBER_COUNT 16
|
625
|
-
|
626
|
-
typedef struct
|
627
|
-
{
|
628
|
-
FIT_STRING part_number[FIT_SOFTWARE_MESG_PART_NUMBER_COUNT]; //
|
629
|
-
FIT_MESSAGE_INDEX message_index; //
|
630
|
-
FIT_UINT16 version; //
|
631
|
-
} FIT_SOFTWARE_MESG;
|
632
|
-
|
633
|
-
#define FIT_SOFTWARE_MESG_SIZE 20
|
634
|
-
|
635
|
-
typedef enum
|
636
|
-
{
|
637
|
-
FIT_SOFTWARE_FIELD_NUM_PART_NUMBER = 5,
|
638
|
-
FIT_SOFTWARE_FIELD_NUM_MESSAGE_INDEX = 254,
|
639
|
-
FIT_SOFTWARE_FIELD_NUM_VERSION = 3
|
640
|
-
} FIT_SOFTWARE_FIELD_NUM;
|
641
|
-
|
642
|
-
typedef enum
|
643
|
-
{
|
644
|
-
FIT_SOFTWARE_MESG_PART_NUMBER,
|
645
|
-
FIT_SOFTWARE_MESG_MESSAGE_INDEX,
|
646
|
-
FIT_SOFTWARE_MESG_VERSION,
|
647
|
-
FIT_SOFTWARE_MESG_FIELDS
|
648
|
-
} FIT_SOFTWARE_MESG_FIELD;
|
649
|
-
|
650
|
-
typedef struct
|
651
|
-
{
|
652
|
-
FIT_UINT8 reserved_1;
|
653
|
-
FIT_UINT8 arch;
|
654
|
-
FIT_MESG_NUM global_mesg_num;
|
655
|
-
FIT_UINT8 num_fields;
|
656
|
-
FIT_UINT8 fields[FIT_SOFTWARE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
657
|
-
} FIT_SOFTWARE_MESG_DEF;
|
658
|
-
|
659
|
-
#define FIT_SOFTWARE_MESG_DEF_SIZE 14
|
660
|
-
|
661
|
-
|
662
|
-
typedef struct
|
663
|
-
{
|
664
|
-
FIT_WORKOUT_CAPABILITIES workouts_supported; //
|
665
|
-
} FIT_CAPABILITIES_MESG;
|
666
|
-
|
667
|
-
#define FIT_CAPABILITIES_MESG_SIZE 4
|
668
|
-
|
669
|
-
typedef enum
|
670
|
-
{
|
671
|
-
FIT_CAPABILITIES_FIELD_NUM_WORKOUTS_SUPPORTED = 21
|
672
|
-
} FIT_CAPABILITIES_FIELD_NUM;
|
673
|
-
|
674
|
-
typedef enum
|
675
|
-
{
|
676
|
-
FIT_CAPABILITIES_MESG_WORKOUTS_SUPPORTED,
|
677
|
-
FIT_CAPABILITIES_MESG_FIELDS
|
678
|
-
} FIT_CAPABILITIES_MESG_FIELD;
|
679
|
-
|
680
|
-
typedef struct
|
681
|
-
{
|
682
|
-
FIT_UINT8 reserved_1;
|
683
|
-
FIT_UINT8 arch;
|
684
|
-
FIT_MESG_NUM global_mesg_num;
|
685
|
-
FIT_UINT8 num_fields;
|
686
|
-
FIT_UINT8 fields[FIT_CAPABILITIES_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
687
|
-
} FIT_CAPABILITIES_MESG_DEF;
|
688
|
-
|
689
|
-
#define FIT_CAPABILITIES_MESG_DEF_SIZE 8
|
690
|
-
|
691
|
-
#define FIT_FILE_CAPABILITIES_MESG_DIRECTORY_COUNT 16
|
692
|
-
|
693
|
-
typedef struct
|
694
|
-
{
|
695
|
-
FIT_STRING directory[FIT_FILE_CAPABILITIES_MESG_DIRECTORY_COUNT]; //
|
696
|
-
FIT_UINT32 max_size; // bytes,
|
697
|
-
FIT_MESSAGE_INDEX message_index; //
|
698
|
-
FIT_UINT16 max_count; //
|
699
|
-
FIT_FILE type; //
|
700
|
-
FIT_FILE_FLAGS flags; //
|
701
|
-
} FIT_FILE_CAPABILITIES_MESG;
|
702
|
-
|
703
|
-
#define FIT_FILE_CAPABILITIES_MESG_SIZE 26
|
704
|
-
|
705
|
-
typedef enum
|
706
|
-
{
|
707
|
-
FIT_FILE_CAPABILITIES_FIELD_NUM_DIRECTORY = 2,
|
708
|
-
FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_SIZE = 4,
|
709
|
-
FIT_FILE_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX = 254,
|
710
|
-
FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_COUNT = 3,
|
711
|
-
FIT_FILE_CAPABILITIES_FIELD_NUM_TYPE = 0,
|
712
|
-
FIT_FILE_CAPABILITIES_FIELD_NUM_FLAGS = 1
|
713
|
-
} FIT_FILE_CAPABILITIES_FIELD_NUM;
|
714
|
-
|
715
|
-
typedef enum
|
716
|
-
{
|
717
|
-
FIT_FILE_CAPABILITIES_MESG_DIRECTORY,
|
718
|
-
FIT_FILE_CAPABILITIES_MESG_MAX_SIZE,
|
719
|
-
FIT_FILE_CAPABILITIES_MESG_MESSAGE_INDEX,
|
720
|
-
FIT_FILE_CAPABILITIES_MESG_MAX_COUNT,
|
721
|
-
FIT_FILE_CAPABILITIES_MESG_TYPE,
|
722
|
-
FIT_FILE_CAPABILITIES_MESG_FLAGS,
|
723
|
-
FIT_FILE_CAPABILITIES_MESG_FIELDS
|
724
|
-
} FIT_FILE_CAPABILITIES_MESG_FIELD;
|
725
|
-
|
726
|
-
typedef struct
|
727
|
-
{
|
728
|
-
FIT_UINT8 reserved_1;
|
729
|
-
FIT_UINT8 arch;
|
730
|
-
FIT_MESG_NUM global_mesg_num;
|
731
|
-
FIT_UINT8 num_fields;
|
732
|
-
FIT_UINT8 fields[FIT_FILE_CAPABILITIES_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
733
|
-
} FIT_FILE_CAPABILITIES_MESG_DEF;
|
734
|
-
|
735
|
-
#define FIT_FILE_CAPABILITIES_MESG_DEF_SIZE 23
|
736
|
-
|
737
|
-
|
738
|
-
typedef struct
|
739
|
-
{
|
740
|
-
FIT_MESSAGE_INDEX message_index; //
|
741
|
-
FIT_MESG_NUM mesg_num; //
|
742
|
-
FIT_UINT16 count; //
|
743
|
-
FIT_FILE file; //
|
744
|
-
FIT_MESG_COUNT count_type; //
|
745
|
-
} FIT_MESG_CAPABILITIES_MESG;
|
746
|
-
|
747
|
-
#define FIT_MESG_CAPABILITIES_MESG_SIZE 8
|
748
|
-
|
749
|
-
typedef enum
|
750
|
-
{
|
751
|
-
FIT_MESG_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX = 254,
|
752
|
-
FIT_MESG_CAPABILITIES_FIELD_NUM_MESG_NUM = 1,
|
753
|
-
FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT = 3,
|
754
|
-
FIT_MESG_CAPABILITIES_FIELD_NUM_FILE = 0,
|
755
|
-
FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT_TYPE = 2
|
756
|
-
} FIT_MESG_CAPABILITIES_FIELD_NUM;
|
757
|
-
|
758
|
-
typedef enum
|
759
|
-
{
|
760
|
-
FIT_MESG_CAPABILITIES_MESG_MESSAGE_INDEX,
|
761
|
-
FIT_MESG_CAPABILITIES_MESG_MESG_NUM,
|
762
|
-
FIT_MESG_CAPABILITIES_MESG_COUNT,
|
763
|
-
FIT_MESG_CAPABILITIES_MESG_FILE,
|
764
|
-
FIT_MESG_CAPABILITIES_MESG_COUNT_TYPE,
|
765
|
-
FIT_MESG_CAPABILITIES_MESG_FIELDS
|
766
|
-
} FIT_MESG_CAPABILITIES_MESG_FIELD;
|
767
|
-
|
768
|
-
typedef struct
|
769
|
-
{
|
770
|
-
FIT_UINT8 reserved_1;
|
771
|
-
FIT_UINT8 arch;
|
772
|
-
FIT_MESG_NUM global_mesg_num;
|
773
|
-
FIT_UINT8 num_fields;
|
774
|
-
FIT_UINT8 fields[FIT_MESG_CAPABILITIES_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
775
|
-
} FIT_MESG_CAPABILITIES_MESG_DEF;
|
776
|
-
|
777
|
-
#define FIT_MESG_CAPABILITIES_MESG_DEF_SIZE 20
|
778
|
-
|
779
|
-
|
780
|
-
typedef struct
|
781
|
-
{
|
782
|
-
FIT_MESSAGE_INDEX message_index; //
|
783
|
-
FIT_MESG_NUM mesg_num; //
|
784
|
-
FIT_UINT16 count; //
|
785
|
-
FIT_FILE file; //
|
786
|
-
FIT_UINT8 field_num; //
|
787
|
-
} FIT_FIELD_CAPABILITIES_MESG;
|
788
|
-
|
789
|
-
#define FIT_FIELD_CAPABILITIES_MESG_SIZE 8
|
790
|
-
|
791
|
-
typedef enum
|
792
|
-
{
|
793
|
-
FIT_FIELD_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX = 254,
|
794
|
-
FIT_FIELD_CAPABILITIES_FIELD_NUM_MESG_NUM = 1,
|
795
|
-
FIT_FIELD_CAPABILITIES_FIELD_NUM_COUNT = 3,
|
796
|
-
FIT_FIELD_CAPABILITIES_FIELD_NUM_FILE = 0,
|
797
|
-
FIT_FIELD_CAPABILITIES_FIELD_NUM_FIELD_NUM = 2
|
798
|
-
} FIT_FIELD_CAPABILITIES_FIELD_NUM;
|
799
|
-
|
800
|
-
typedef enum
|
801
|
-
{
|
802
|
-
FIT_FIELD_CAPABILITIES_MESG_MESSAGE_INDEX,
|
803
|
-
FIT_FIELD_CAPABILITIES_MESG_MESG_NUM,
|
804
|
-
FIT_FIELD_CAPABILITIES_MESG_COUNT,
|
805
|
-
FIT_FIELD_CAPABILITIES_MESG_FILE,
|
806
|
-
FIT_FIELD_CAPABILITIES_MESG_FIELD_NUM,
|
807
|
-
FIT_FIELD_CAPABILITIES_MESG_FIELDS
|
808
|
-
} FIT_FIELD_CAPABILITIES_MESG_FIELD;
|
809
|
-
|
810
|
-
typedef struct
|
811
|
-
{
|
812
|
-
FIT_UINT8 reserved_1;
|
813
|
-
FIT_UINT8 arch;
|
814
|
-
FIT_MESG_NUM global_mesg_num;
|
815
|
-
FIT_UINT8 num_fields;
|
816
|
-
FIT_UINT8 fields[FIT_FIELD_CAPABILITIES_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
817
|
-
} FIT_FIELD_CAPABILITIES_MESG_DEF;
|
818
|
-
|
819
|
-
#define FIT_FIELD_CAPABILITIES_MESG_DEF_SIZE 20
|
820
|
-
|
821
|
-
|
822
|
-
typedef struct
|
823
|
-
{
|
824
|
-
FIT_UINT32 utc_offset; // Offset from system time. Required to convert timestamp from system time to UTC.
|
825
|
-
} FIT_DEVICE_SETTINGS_MESG;
|
826
|
-
|
827
|
-
#define FIT_DEVICE_SETTINGS_MESG_SIZE 4
|
828
|
-
|
829
|
-
typedef enum
|
830
|
-
{
|
831
|
-
FIT_DEVICE_SETTINGS_FIELD_NUM_UTC_OFFSET = 1
|
832
|
-
} FIT_DEVICE_SETTINGS_FIELD_NUM;
|
833
|
-
|
834
|
-
typedef enum
|
835
|
-
{
|
836
|
-
FIT_DEVICE_SETTINGS_MESG_UTC_OFFSET,
|
837
|
-
FIT_DEVICE_SETTINGS_MESG_FIELDS
|
838
|
-
} FIT_DEVICE_SETTINGS_MESG_FIELD;
|
839
|
-
|
840
|
-
typedef struct
|
841
|
-
{
|
842
|
-
FIT_UINT8 reserved_1;
|
843
|
-
FIT_UINT8 arch;
|
844
|
-
FIT_MESG_NUM global_mesg_num;
|
845
|
-
FIT_UINT8 num_fields;
|
846
|
-
FIT_UINT8 fields[FIT_DEVICE_SETTINGS_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
847
|
-
} FIT_DEVICE_SETTINGS_MESG_DEF;
|
848
|
-
|
849
|
-
#define FIT_DEVICE_SETTINGS_MESG_DEF_SIZE 8
|
850
|
-
|
851
|
-
#define FIT_USER_PROFILE_MESG_FRIENDLY_NAME_COUNT 16
|
852
|
-
|
853
|
-
typedef struct
|
854
|
-
{
|
855
|
-
FIT_STRING friendly_name[FIT_USER_PROFILE_MESG_FRIENDLY_NAME_COUNT]; //
|
856
|
-
FIT_MESSAGE_INDEX message_index; //
|
857
|
-
FIT_UINT16 weight; // 10.000 * kg,
|
858
|
-
FIT_GENDER gender; //
|
859
|
-
FIT_UINT8 age; // years,
|
860
|
-
FIT_UINT8 height; // 100.000 * m,
|
861
|
-
FIT_LANGUAGE language; //
|
862
|
-
FIT_DISPLAY_MEASURE elev_setting; //
|
863
|
-
FIT_DISPLAY_MEASURE weight_setting; //
|
864
|
-
FIT_UINT8 resting_heart_rate; // bpm,
|
865
|
-
FIT_UINT8 default_max_running_heart_rate; // bpm,
|
866
|
-
FIT_UINT8 default_max_biking_heart_rate; // bpm,
|
867
|
-
FIT_UINT8 default_max_heart_rate; // bpm,
|
868
|
-
FIT_DISPLAY_HEART hr_setting; //
|
869
|
-
FIT_DISPLAY_MEASURE speed_setting; //
|
870
|
-
FIT_DISPLAY_MEASURE dist_setting; //
|
871
|
-
FIT_DISPLAY_POWER power_setting; //
|
872
|
-
FIT_ACTIVITY_CLASS activity_class; //
|
873
|
-
FIT_DISPLAY_POSITION position_setting; //
|
874
|
-
} FIT_USER_PROFILE_MESG;
|
875
|
-
|
876
|
-
#define FIT_USER_PROFILE_MESG_SIZE 36
|
877
|
-
|
878
|
-
typedef enum
|
879
|
-
{
|
880
|
-
FIT_USER_PROFILE_FIELD_NUM_FRIENDLY_NAME = 0,
|
881
|
-
FIT_USER_PROFILE_FIELD_NUM_MESSAGE_INDEX = 254,
|
882
|
-
FIT_USER_PROFILE_FIELD_NUM_WEIGHT = 4,
|
883
|
-
FIT_USER_PROFILE_FIELD_NUM_GENDER = 1,
|
884
|
-
FIT_USER_PROFILE_FIELD_NUM_AGE = 2,
|
885
|
-
FIT_USER_PROFILE_FIELD_NUM_HEIGHT = 3,
|
886
|
-
FIT_USER_PROFILE_FIELD_NUM_LANGUAGE = 5,
|
887
|
-
FIT_USER_PROFILE_FIELD_NUM_ELEV_SETTING = 6,
|
888
|
-
FIT_USER_PROFILE_FIELD_NUM_WEIGHT_SETTING = 7,
|
889
|
-
FIT_USER_PROFILE_FIELD_NUM_RESTING_HEART_RATE = 8,
|
890
|
-
FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_RUNNING_HEART_RATE = 9,
|
891
|
-
FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_BIKING_HEART_RATE = 10,
|
892
|
-
FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_HEART_RATE = 11,
|
893
|
-
FIT_USER_PROFILE_FIELD_NUM_HR_SETTING = 12,
|
894
|
-
FIT_USER_PROFILE_FIELD_NUM_SPEED_SETTING = 13,
|
895
|
-
FIT_USER_PROFILE_FIELD_NUM_DIST_SETTING = 14,
|
896
|
-
FIT_USER_PROFILE_FIELD_NUM_POWER_SETTING = 16,
|
897
|
-
FIT_USER_PROFILE_FIELD_NUM_ACTIVITY_CLASS = 17,
|
898
|
-
FIT_USER_PROFILE_FIELD_NUM_POSITION_SETTING = 18
|
899
|
-
} FIT_USER_PROFILE_FIELD_NUM;
|
900
|
-
|
901
|
-
typedef enum
|
902
|
-
{
|
903
|
-
FIT_USER_PROFILE_MESG_FRIENDLY_NAME,
|
904
|
-
FIT_USER_PROFILE_MESG_MESSAGE_INDEX,
|
905
|
-
FIT_USER_PROFILE_MESG_WEIGHT,
|
906
|
-
FIT_USER_PROFILE_MESG_GENDER,
|
907
|
-
FIT_USER_PROFILE_MESG_AGE,
|
908
|
-
FIT_USER_PROFILE_MESG_HEIGHT,
|
909
|
-
FIT_USER_PROFILE_MESG_LANGUAGE,
|
910
|
-
FIT_USER_PROFILE_MESG_ELEV_SETTING,
|
911
|
-
FIT_USER_PROFILE_MESG_WEIGHT_SETTING,
|
912
|
-
FIT_USER_PROFILE_MESG_RESTING_HEART_RATE,
|
913
|
-
FIT_USER_PROFILE_MESG_DEFAULT_MAX_RUNNING_HEART_RATE,
|
914
|
-
FIT_USER_PROFILE_MESG_DEFAULT_MAX_BIKING_HEART_RATE,
|
915
|
-
FIT_USER_PROFILE_MESG_DEFAULT_MAX_HEART_RATE,
|
916
|
-
FIT_USER_PROFILE_MESG_HR_SETTING,
|
917
|
-
FIT_USER_PROFILE_MESG_SPEED_SETTING,
|
918
|
-
FIT_USER_PROFILE_MESG_DIST_SETTING,
|
919
|
-
FIT_USER_PROFILE_MESG_POWER_SETTING,
|
920
|
-
FIT_USER_PROFILE_MESG_ACTIVITY_CLASS,
|
921
|
-
FIT_USER_PROFILE_MESG_POSITION_SETTING,
|
922
|
-
FIT_USER_PROFILE_MESG_FIELDS
|
923
|
-
} FIT_USER_PROFILE_MESG_FIELD;
|
924
|
-
|
925
|
-
typedef struct
|
926
|
-
{
|
927
|
-
FIT_UINT8 reserved_1;
|
928
|
-
FIT_UINT8 arch;
|
929
|
-
FIT_MESG_NUM global_mesg_num;
|
930
|
-
FIT_UINT8 num_fields;
|
931
|
-
FIT_UINT8 fields[FIT_USER_PROFILE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
932
|
-
} FIT_USER_PROFILE_MESG_DEF;
|
933
|
-
|
934
|
-
#define FIT_USER_PROFILE_MESG_DEF_SIZE 62
|
935
|
-
|
936
|
-
|
937
|
-
typedef struct
|
938
|
-
{
|
939
|
-
FIT_MESSAGE_INDEX message_index; //
|
940
|
-
FIT_UINT16Z hrm_ant_id; //
|
941
|
-
FIT_BOOL enabled; //
|
942
|
-
} FIT_HRM_PROFILE_MESG;
|
943
|
-
|
944
|
-
#define FIT_HRM_PROFILE_MESG_SIZE 5
|
945
|
-
|
946
|
-
typedef enum
|
947
|
-
{
|
948
|
-
FIT_HRM_PROFILE_FIELD_NUM_MESSAGE_INDEX = 254,
|
949
|
-
FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID = 1,
|
950
|
-
FIT_HRM_PROFILE_FIELD_NUM_ENABLED = 0
|
951
|
-
} FIT_HRM_PROFILE_FIELD_NUM;
|
952
|
-
|
953
|
-
typedef enum
|
954
|
-
{
|
955
|
-
FIT_HRM_PROFILE_MESG_MESSAGE_INDEX,
|
956
|
-
FIT_HRM_PROFILE_MESG_HRM_ANT_ID,
|
957
|
-
FIT_HRM_PROFILE_MESG_ENABLED,
|
958
|
-
FIT_HRM_PROFILE_MESG_FIELDS
|
959
|
-
} FIT_HRM_PROFILE_MESG_FIELD;
|
960
|
-
|
961
|
-
typedef struct
|
962
|
-
{
|
963
|
-
FIT_UINT8 reserved_1;
|
964
|
-
FIT_UINT8 arch;
|
965
|
-
FIT_MESG_NUM global_mesg_num;
|
966
|
-
FIT_UINT8 num_fields;
|
967
|
-
FIT_UINT8 fields[FIT_HRM_PROFILE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
968
|
-
} FIT_HRM_PROFILE_MESG_DEF;
|
969
|
-
|
970
|
-
#define FIT_HRM_PROFILE_MESG_DEF_SIZE 14
|
971
|
-
|
972
|
-
|
973
|
-
typedef struct
|
974
|
-
{
|
975
|
-
FIT_UINT16 functional_threshold_power; //
|
976
|
-
FIT_UINT8 max_heart_rate; //
|
977
|
-
FIT_UINT8 threshold_heart_rate; //
|
978
|
-
FIT_HR_ZONE_CALC hr_calc_type; //
|
979
|
-
FIT_PWR_ZONE_CALC pwr_calc_type; //
|
980
|
-
} FIT_ZONES_TARGET_MESG;
|
981
|
-
|
982
|
-
#define FIT_ZONES_TARGET_MESG_SIZE 6
|
983
|
-
|
984
|
-
typedef enum
|
985
|
-
{
|
986
|
-
FIT_ZONES_TARGET_FIELD_NUM_FUNCTIONAL_THRESHOLD_POWER = 3,
|
987
|
-
FIT_ZONES_TARGET_FIELD_NUM_MAX_HEART_RATE = 1,
|
988
|
-
FIT_ZONES_TARGET_FIELD_NUM_THRESHOLD_HEART_RATE = 2,
|
989
|
-
FIT_ZONES_TARGET_FIELD_NUM_HR_CALC_TYPE = 5,
|
990
|
-
FIT_ZONES_TARGET_FIELD_NUM_PWR_CALC_TYPE = 7
|
991
|
-
} FIT_ZONES_TARGET_FIELD_NUM;
|
992
|
-
|
993
|
-
typedef enum
|
994
|
-
{
|
995
|
-
FIT_ZONES_TARGET_MESG_FUNCTIONAL_THRESHOLD_POWER,
|
996
|
-
FIT_ZONES_TARGET_MESG_MAX_HEART_RATE,
|
997
|
-
FIT_ZONES_TARGET_MESG_THRESHOLD_HEART_RATE,
|
998
|
-
FIT_ZONES_TARGET_MESG_HR_CALC_TYPE,
|
999
|
-
FIT_ZONES_TARGET_MESG_PWR_CALC_TYPE,
|
1000
|
-
FIT_ZONES_TARGET_MESG_FIELDS
|
1001
|
-
} FIT_ZONES_TARGET_MESG_FIELD;
|
1002
|
-
|
1003
|
-
typedef struct
|
1004
|
-
{
|
1005
|
-
FIT_UINT8 reserved_1;
|
1006
|
-
FIT_UINT8 arch;
|
1007
|
-
FIT_MESG_NUM global_mesg_num;
|
1008
|
-
FIT_UINT8 num_fields;
|
1009
|
-
FIT_UINT8 fields[FIT_ZONES_TARGET_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1010
|
-
} FIT_ZONES_TARGET_MESG_DEF;
|
1011
|
-
|
1012
|
-
#define FIT_ZONES_TARGET_MESG_DEF_SIZE 20
|
1013
|
-
|
1014
|
-
#define FIT_SPORT_MESG_NAME_COUNT 16
|
1015
|
-
|
1016
|
-
typedef struct
|
1017
|
-
{
|
1018
|
-
FIT_STRING name[FIT_SPORT_MESG_NAME_COUNT]; //
|
1019
|
-
FIT_SPORT sport; //
|
1020
|
-
FIT_SUB_SPORT sub_sport; //
|
1021
|
-
} FIT_SPORT_MESG;
|
1022
|
-
|
1023
|
-
#define FIT_SPORT_MESG_SIZE 18
|
1024
|
-
|
1025
|
-
typedef enum
|
1026
|
-
{
|
1027
|
-
FIT_SPORT_FIELD_NUM_NAME = 3,
|
1028
|
-
FIT_SPORT_FIELD_NUM_SPORT = 0,
|
1029
|
-
FIT_SPORT_FIELD_NUM_SUB_SPORT = 1
|
1030
|
-
} FIT_SPORT_FIELD_NUM;
|
1031
|
-
|
1032
|
-
typedef enum
|
1033
|
-
{
|
1034
|
-
FIT_SPORT_MESG_NAME,
|
1035
|
-
FIT_SPORT_MESG_SPORT,
|
1036
|
-
FIT_SPORT_MESG_SUB_SPORT,
|
1037
|
-
FIT_SPORT_MESG_FIELDS
|
1038
|
-
} FIT_SPORT_MESG_FIELD;
|
1039
|
-
|
1040
|
-
typedef struct
|
1041
|
-
{
|
1042
|
-
FIT_UINT8 reserved_1;
|
1043
|
-
FIT_UINT8 arch;
|
1044
|
-
FIT_MESG_NUM global_mesg_num;
|
1045
|
-
FIT_UINT8 num_fields;
|
1046
|
-
FIT_UINT8 fields[FIT_SPORT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1047
|
-
} FIT_SPORT_MESG_DEF;
|
1048
|
-
|
1049
|
-
#define FIT_SPORT_MESG_DEF_SIZE 14
|
1050
|
-
|
1051
|
-
#define FIT_HR_ZONE_MESG_NAME_COUNT 1
|
1052
|
-
|
1053
|
-
typedef struct
|
1054
|
-
{
|
1055
|
-
FIT_MESSAGE_INDEX message_index; //
|
1056
|
-
FIT_UINT8 high_bpm; // bpm,
|
1057
|
-
FIT_STRING name[FIT_HR_ZONE_MESG_NAME_COUNT]; //
|
1058
|
-
} FIT_HR_ZONE_MESG;
|
1059
|
-
|
1060
|
-
#define FIT_HR_ZONE_MESG_SIZE 4
|
1061
|
-
|
1062
|
-
typedef enum
|
1063
|
-
{
|
1064
|
-
FIT_HR_ZONE_FIELD_NUM_MESSAGE_INDEX = 254,
|
1065
|
-
FIT_HR_ZONE_FIELD_NUM_HIGH_BPM = 1,
|
1066
|
-
FIT_HR_ZONE_FIELD_NUM_NAME = 2
|
1067
|
-
} FIT_HR_ZONE_FIELD_NUM;
|
1068
|
-
|
1069
|
-
typedef enum
|
1070
|
-
{
|
1071
|
-
FIT_HR_ZONE_MESG_MESSAGE_INDEX,
|
1072
|
-
FIT_HR_ZONE_MESG_HIGH_BPM,
|
1073
|
-
FIT_HR_ZONE_MESG_NAME,
|
1074
|
-
FIT_HR_ZONE_MESG_FIELDS
|
1075
|
-
} FIT_HR_ZONE_MESG_FIELD;
|
1076
|
-
|
1077
|
-
typedef struct
|
1078
|
-
{
|
1079
|
-
FIT_UINT8 reserved_1;
|
1080
|
-
FIT_UINT8 arch;
|
1081
|
-
FIT_MESG_NUM global_mesg_num;
|
1082
|
-
FIT_UINT8 num_fields;
|
1083
|
-
FIT_UINT8 fields[FIT_HR_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1084
|
-
} FIT_HR_ZONE_MESG_DEF;
|
1085
|
-
|
1086
|
-
#define FIT_HR_ZONE_MESG_DEF_SIZE 14
|
1087
|
-
|
1088
|
-
#define FIT_SPEED_ZONE_MESG_NAME_COUNT 1
|
1089
|
-
|
1090
|
-
typedef struct
|
1091
|
-
{
|
1092
|
-
FIT_MESSAGE_INDEX message_index; //
|
1093
|
-
FIT_UINT16 high_value; // 1000.000 * m/s,
|
1094
|
-
FIT_STRING name[FIT_SPEED_ZONE_MESG_NAME_COUNT]; //
|
1095
|
-
} FIT_SPEED_ZONE_MESG;
|
1096
|
-
|
1097
|
-
#define FIT_SPEED_ZONE_MESG_SIZE 5
|
1098
|
-
|
1099
|
-
typedef enum
|
1100
|
-
{
|
1101
|
-
FIT_SPEED_ZONE_FIELD_NUM_MESSAGE_INDEX = 254,
|
1102
|
-
FIT_SPEED_ZONE_FIELD_NUM_HIGH_VALUE = 0,
|
1103
|
-
FIT_SPEED_ZONE_FIELD_NUM_NAME = 1
|
1104
|
-
} FIT_SPEED_ZONE_FIELD_NUM;
|
1105
|
-
|
1106
|
-
typedef enum
|
1107
|
-
{
|
1108
|
-
FIT_SPEED_ZONE_MESG_MESSAGE_INDEX,
|
1109
|
-
FIT_SPEED_ZONE_MESG_HIGH_VALUE,
|
1110
|
-
FIT_SPEED_ZONE_MESG_NAME,
|
1111
|
-
FIT_SPEED_ZONE_MESG_FIELDS
|
1112
|
-
} FIT_SPEED_ZONE_MESG_FIELD;
|
1113
|
-
|
1114
|
-
typedef struct
|
1115
|
-
{
|
1116
|
-
FIT_UINT8 reserved_1;
|
1117
|
-
FIT_UINT8 arch;
|
1118
|
-
FIT_MESG_NUM global_mesg_num;
|
1119
|
-
FIT_UINT8 num_fields;
|
1120
|
-
FIT_UINT8 fields[FIT_SPEED_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1121
|
-
} FIT_SPEED_ZONE_MESG_DEF;
|
1122
|
-
|
1123
|
-
#define FIT_SPEED_ZONE_MESG_DEF_SIZE 14
|
1124
|
-
|
1125
|
-
#define FIT_POWER_ZONE_MESG_NAME_COUNT 1
|
1126
|
-
|
1127
|
-
typedef struct
|
1128
|
-
{
|
1129
|
-
FIT_MESSAGE_INDEX message_index; //
|
1130
|
-
FIT_UINT16 high_value; //
|
1131
|
-
FIT_STRING name[FIT_POWER_ZONE_MESG_NAME_COUNT]; //
|
1132
|
-
} FIT_POWER_ZONE_MESG;
|
1133
|
-
|
1134
|
-
#define FIT_POWER_ZONE_MESG_SIZE 5
|
1135
|
-
|
1136
|
-
typedef enum
|
1137
|
-
{
|
1138
|
-
FIT_POWER_ZONE_FIELD_NUM_MESSAGE_INDEX = 254,
|
1139
|
-
FIT_POWER_ZONE_FIELD_NUM_HIGH_VALUE = 1,
|
1140
|
-
FIT_POWER_ZONE_FIELD_NUM_NAME = 2
|
1141
|
-
} FIT_POWER_ZONE_FIELD_NUM;
|
1142
|
-
|
1143
|
-
typedef enum
|
1144
|
-
{
|
1145
|
-
FIT_POWER_ZONE_MESG_MESSAGE_INDEX,
|
1146
|
-
FIT_POWER_ZONE_MESG_HIGH_VALUE,
|
1147
|
-
FIT_POWER_ZONE_MESG_NAME,
|
1148
|
-
FIT_POWER_ZONE_MESG_FIELDS
|
1149
|
-
} FIT_POWER_ZONE_MESG_FIELD;
|
1150
|
-
|
1151
|
-
typedef struct
|
1152
|
-
{
|
1153
|
-
FIT_UINT8 reserved_1;
|
1154
|
-
FIT_UINT8 arch;
|
1155
|
-
FIT_MESG_NUM global_mesg_num;
|
1156
|
-
FIT_UINT8 num_fields;
|
1157
|
-
FIT_UINT8 fields[FIT_POWER_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1158
|
-
} FIT_POWER_ZONE_MESG_DEF;
|
1159
|
-
|
1160
|
-
#define FIT_POWER_ZONE_MESG_DEF_SIZE 14
|
1161
|
-
|
1162
|
-
|
1163
|
-
typedef struct
|
1164
|
-
{
|
1165
|
-
FIT_MESSAGE_INDEX message_index; //
|
1166
|
-
FIT_UINT16 calories; // 10.000 * kcal / min,
|
1167
|
-
FIT_UINT8 high_bpm; //
|
1168
|
-
FIT_UINT8 fat_calories; // 10.000 * kcal / min,
|
1169
|
-
} FIT_MET_ZONE_MESG;
|
1170
|
-
|
1171
|
-
#define FIT_MET_ZONE_MESG_SIZE 6
|
1172
|
-
|
1173
|
-
typedef enum
|
1174
|
-
{
|
1175
|
-
FIT_MET_ZONE_FIELD_NUM_MESSAGE_INDEX = 254,
|
1176
|
-
FIT_MET_ZONE_FIELD_NUM_CALORIES = 2,
|
1177
|
-
FIT_MET_ZONE_FIELD_NUM_HIGH_BPM = 1,
|
1178
|
-
FIT_MET_ZONE_FIELD_NUM_FAT_CALORIES = 3
|
1179
|
-
} FIT_MET_ZONE_FIELD_NUM;
|
1180
|
-
|
1181
|
-
typedef enum
|
1182
|
-
{
|
1183
|
-
FIT_MET_ZONE_MESG_MESSAGE_INDEX,
|
1184
|
-
FIT_MET_ZONE_MESG_CALORIES,
|
1185
|
-
FIT_MET_ZONE_MESG_HIGH_BPM,
|
1186
|
-
FIT_MET_ZONE_MESG_FAT_CALORIES,
|
1187
|
-
FIT_MET_ZONE_MESG_FIELDS
|
1188
|
-
} FIT_MET_ZONE_MESG_FIELD;
|
1189
|
-
|
1190
|
-
typedef struct
|
1191
|
-
{
|
1192
|
-
FIT_UINT8 reserved_1;
|
1193
|
-
FIT_UINT8 arch;
|
1194
|
-
FIT_MESG_NUM global_mesg_num;
|
1195
|
-
FIT_UINT8 num_fields;
|
1196
|
-
FIT_UINT8 fields[FIT_MET_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1197
|
-
} FIT_MET_ZONE_MESG_DEF;
|
1198
|
-
|
1199
|
-
#define FIT_MET_ZONE_MESG_DEF_SIZE 17
|
1200
|
-
|
1201
|
-
|
1202
|
-
typedef struct
|
1203
|
-
{
|
1204
|
-
FIT_DATE_TIME timestamp; //
|
1205
|
-
FIT_UINT32 total_timer_time; // 1000.000 * s, Exclude pauses
|
1206
|
-
FIT_DATE_TIME local_timestamp; // Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction.
|
1207
|
-
FIT_UINT16 num_sessions; //
|
1208
|
-
FIT_ACTIVITY type; //
|
1209
|
-
FIT_EVENT event; // default = activity,
|
1210
|
-
FIT_EVENT_TYPE event_type; // default = consecutive,
|
1211
|
-
FIT_UINT8 event_group; //
|
1212
|
-
} FIT_ACTIVITY_MESG;
|
1213
|
-
|
1214
|
-
#define FIT_ACTIVITY_MESG_SIZE 18
|
1215
|
-
|
1216
|
-
typedef enum
|
1217
|
-
{
|
1218
|
-
FIT_ACTIVITY_FIELD_NUM_TIMESTAMP = 253,
|
1219
|
-
FIT_ACTIVITY_FIELD_NUM_TOTAL_TIMER_TIME = 0,
|
1220
|
-
FIT_ACTIVITY_FIELD_NUM_LOCAL_TIMESTAMP = 5,
|
1221
|
-
FIT_ACTIVITY_FIELD_NUM_NUM_SESSIONS = 1,
|
1222
|
-
FIT_ACTIVITY_FIELD_NUM_TYPE = 2,
|
1223
|
-
FIT_ACTIVITY_FIELD_NUM_EVENT = 3,
|
1224
|
-
FIT_ACTIVITY_FIELD_NUM_EVENT_TYPE = 4,
|
1225
|
-
FIT_ACTIVITY_FIELD_NUM_EVENT_GROUP = 6
|
1226
|
-
} FIT_ACTIVITY_FIELD_NUM;
|
1227
|
-
|
1228
|
-
typedef enum
|
1229
|
-
{
|
1230
|
-
FIT_ACTIVITY_MESG_TIMESTAMP,
|
1231
|
-
FIT_ACTIVITY_MESG_TOTAL_TIMER_TIME,
|
1232
|
-
FIT_ACTIVITY_MESG_LOCAL_TIMESTAMP,
|
1233
|
-
FIT_ACTIVITY_MESG_NUM_SESSIONS,
|
1234
|
-
FIT_ACTIVITY_MESG_TYPE,
|
1235
|
-
FIT_ACTIVITY_MESG_EVENT,
|
1236
|
-
FIT_ACTIVITY_MESG_EVENT_TYPE,
|
1237
|
-
FIT_ACTIVITY_MESG_EVENT_GROUP,
|
1238
|
-
FIT_ACTIVITY_MESG_FIELDS
|
1239
|
-
} FIT_ACTIVITY_MESG_FIELD;
|
1240
|
-
|
1241
|
-
typedef struct
|
1242
|
-
{
|
1243
|
-
FIT_UINT8 reserved_1;
|
1244
|
-
FIT_UINT8 arch;
|
1245
|
-
FIT_MESG_NUM global_mesg_num;
|
1246
|
-
FIT_UINT8 num_fields;
|
1247
|
-
FIT_UINT8 fields[FIT_ACTIVITY_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1248
|
-
} FIT_ACTIVITY_MESG_DEF;
|
1249
|
-
|
1250
|
-
#define FIT_ACTIVITY_MESG_DEF_SIZE 29
|
1251
|
-
|
1252
|
-
|
1253
|
-
typedef struct
|
1254
|
-
{
|
1255
|
-
FIT_DATE_TIME timestamp; // s, Sesson end time.
|
1256
|
-
FIT_DATE_TIME start_time; //
|
1257
|
-
FIT_SINT32 start_position_lat; // semicircles, **** Invalid is lat & long both 0x7FFFFFFF! Deg = 180 / (2^31)
|
1258
|
-
FIT_SINT32 start_position_long; // semicircles, **** Invalid is lat & long both 0x7FFFFFFF! Deg = 180 / (2^31)
|
1259
|
-
FIT_UINT32 total_elapsed_time; // 1000.000 * s, Time (includes pauses)
|
1260
|
-
FIT_UINT32 total_timer_time; // 1000.000 * s, Timer Time (excludes pauses)
|
1261
|
-
FIT_UINT32 total_distance; // 100.000 * m,
|
1262
|
-
FIT_UINT32 total_cycles; // cycles,
|
1263
|
-
FIT_SINT32 nec_lat; // semicircles,
|
1264
|
-
FIT_SINT32 nec_long; // semicircles,
|
1265
|
-
FIT_SINT32 swc_lat; // semicircles,
|
1266
|
-
FIT_SINT32 swc_long; // semicircles,
|
1267
|
-
FIT_MESSAGE_INDEX message_index; // default = 0,
|
1268
|
-
FIT_UINT16 total_calories; // kcal,
|
1269
|
-
FIT_UINT16 total_fat_calories; // kcal, If New Leaf
|
1270
|
-
FIT_UINT16 avg_speed; // 1000.000 * m/s, total_distance / total_timer_time
|
1271
|
-
FIT_UINT16 max_speed; // 1000.000 * m/s,
|
1272
|
-
FIT_UINT16 avg_power; // watts, total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time
|
1273
|
-
FIT_UINT16 max_power; // watts,
|
1274
|
-
FIT_UINT16 total_ascent; // m,
|
1275
|
-
FIT_UINT16 total_descent; // m,
|
1276
|
-
FIT_UINT16 first_lap_index; // default = 0,
|
1277
|
-
FIT_UINT16 num_laps; // default = 1,
|
1278
|
-
FIT_EVENT event; // default = session,
|
1279
|
-
FIT_EVENT_TYPE event_type; // default = consecutive,
|
1280
|
-
FIT_SPORT sport; //
|
1281
|
-
FIT_SUB_SPORT sub_sport; //
|
1282
|
-
FIT_UINT8 avg_heart_rate; // bpm, average heart rate (excludes pause time)
|
1283
|
-
FIT_UINT8 max_heart_rate; // bpm,
|
1284
|
-
FIT_UINT8 avg_cadence; // rpm, total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time
|
1285
|
-
FIT_UINT8 max_cadence; // rpm,
|
1286
|
-
FIT_UINT8 total_training_effect; //
|
1287
|
-
FIT_UINT8 event_group; //
|
1288
|
-
FIT_SESSION_TRIGGER trigger; //
|
1289
|
-
} FIT_SESSION_MESG;
|
1290
|
-
|
1291
|
-
#define FIT_SESSION_MESG_SIZE 81
|
1292
|
-
|
1293
|
-
typedef enum
|
1294
|
-
{
|
1295
|
-
FIT_SESSION_FIELD_NUM_TIMESTAMP = 253,
|
1296
|
-
FIT_SESSION_FIELD_NUM_START_TIME = 2,
|
1297
|
-
FIT_SESSION_FIELD_NUM_START_POSITION_LAT = 3,
|
1298
|
-
FIT_SESSION_FIELD_NUM_START_POSITION_LONG = 4,
|
1299
|
-
FIT_SESSION_FIELD_NUM_TOTAL_ELAPSED_TIME = 7,
|
1300
|
-
FIT_SESSION_FIELD_NUM_TOTAL_TIMER_TIME = 8,
|
1301
|
-
FIT_SESSION_FIELD_NUM_TOTAL_DISTANCE = 9,
|
1302
|
-
FIT_SESSION_FIELD_NUM_TOTAL_CYCLES = 10,
|
1303
|
-
FIT_SESSION_FIELD_NUM_NEC_LAT = 29,
|
1304
|
-
FIT_SESSION_FIELD_NUM_NEC_LONG = 30,
|
1305
|
-
FIT_SESSION_FIELD_NUM_SWC_LAT = 31,
|
1306
|
-
FIT_SESSION_FIELD_NUM_SWC_LONG = 32,
|
1307
|
-
FIT_SESSION_FIELD_NUM_MESSAGE_INDEX = 254,
|
1308
|
-
FIT_SESSION_FIELD_NUM_TOTAL_CALORIES = 11,
|
1309
|
-
FIT_SESSION_FIELD_NUM_TOTAL_FAT_CALORIES = 13,
|
1310
|
-
FIT_SESSION_FIELD_NUM_AVG_SPEED = 14,
|
1311
|
-
FIT_SESSION_FIELD_NUM_MAX_SPEED = 15,
|
1312
|
-
FIT_SESSION_FIELD_NUM_AVG_POWER = 20,
|
1313
|
-
FIT_SESSION_FIELD_NUM_MAX_POWER = 21,
|
1314
|
-
FIT_SESSION_FIELD_NUM_TOTAL_ASCENT = 22,
|
1315
|
-
FIT_SESSION_FIELD_NUM_TOTAL_DESCENT = 23,
|
1316
|
-
FIT_SESSION_FIELD_NUM_FIRST_LAP_INDEX = 25,
|
1317
|
-
FIT_SESSION_FIELD_NUM_NUM_LAPS = 26,
|
1318
|
-
FIT_SESSION_FIELD_NUM_EVENT = 0,
|
1319
|
-
FIT_SESSION_FIELD_NUM_EVENT_TYPE = 1,
|
1320
|
-
FIT_SESSION_FIELD_NUM_SPORT = 5,
|
1321
|
-
FIT_SESSION_FIELD_NUM_SUB_SPORT = 6,
|
1322
|
-
FIT_SESSION_FIELD_NUM_AVG_HEART_RATE = 16,
|
1323
|
-
FIT_SESSION_FIELD_NUM_MAX_HEART_RATE = 17,
|
1324
|
-
FIT_SESSION_FIELD_NUM_AVG_CADENCE = 18,
|
1325
|
-
FIT_SESSION_FIELD_NUM_MAX_CADENCE = 19,
|
1326
|
-
FIT_SESSION_FIELD_NUM_TOTAL_TRAINING_EFFECT = 24,
|
1327
|
-
FIT_SESSION_FIELD_NUM_EVENT_GROUP = 27,
|
1328
|
-
FIT_SESSION_FIELD_NUM_TRIGGER = 28
|
1329
|
-
} FIT_SESSION_FIELD_NUM;
|
1330
|
-
|
1331
|
-
typedef enum
|
1332
|
-
{
|
1333
|
-
FIT_SESSION_MESG_TIMESTAMP,
|
1334
|
-
FIT_SESSION_MESG_START_TIME,
|
1335
|
-
FIT_SESSION_MESG_START_POSITION_LAT,
|
1336
|
-
FIT_SESSION_MESG_START_POSITION_LONG,
|
1337
|
-
FIT_SESSION_MESG_TOTAL_ELAPSED_TIME,
|
1338
|
-
FIT_SESSION_MESG_TOTAL_TIMER_TIME,
|
1339
|
-
FIT_SESSION_MESG_TOTAL_DISTANCE,
|
1340
|
-
FIT_SESSION_MESG_TOTAL_CYCLES,
|
1341
|
-
FIT_SESSION_MESG_NEC_LAT,
|
1342
|
-
FIT_SESSION_MESG_NEC_LONG,
|
1343
|
-
FIT_SESSION_MESG_SWC_LAT,
|
1344
|
-
FIT_SESSION_MESG_SWC_LONG,
|
1345
|
-
FIT_SESSION_MESG_MESSAGE_INDEX,
|
1346
|
-
FIT_SESSION_MESG_TOTAL_CALORIES,
|
1347
|
-
FIT_SESSION_MESG_TOTAL_FAT_CALORIES,
|
1348
|
-
FIT_SESSION_MESG_AVG_SPEED,
|
1349
|
-
FIT_SESSION_MESG_MAX_SPEED,
|
1350
|
-
FIT_SESSION_MESG_AVG_POWER,
|
1351
|
-
FIT_SESSION_MESG_MAX_POWER,
|
1352
|
-
FIT_SESSION_MESG_TOTAL_ASCENT,
|
1353
|
-
FIT_SESSION_MESG_TOTAL_DESCENT,
|
1354
|
-
FIT_SESSION_MESG_FIRST_LAP_INDEX,
|
1355
|
-
FIT_SESSION_MESG_NUM_LAPS,
|
1356
|
-
FIT_SESSION_MESG_EVENT,
|
1357
|
-
FIT_SESSION_MESG_EVENT_TYPE,
|
1358
|
-
FIT_SESSION_MESG_SPORT,
|
1359
|
-
FIT_SESSION_MESG_SUB_SPORT,
|
1360
|
-
FIT_SESSION_MESG_AVG_HEART_RATE,
|
1361
|
-
FIT_SESSION_MESG_MAX_HEART_RATE,
|
1362
|
-
FIT_SESSION_MESG_AVG_CADENCE,
|
1363
|
-
FIT_SESSION_MESG_MAX_CADENCE,
|
1364
|
-
FIT_SESSION_MESG_TOTAL_TRAINING_EFFECT,
|
1365
|
-
FIT_SESSION_MESG_EVENT_GROUP,
|
1366
|
-
FIT_SESSION_MESG_TRIGGER,
|
1367
|
-
FIT_SESSION_MESG_FIELDS
|
1368
|
-
} FIT_SESSION_MESG_FIELD;
|
1369
|
-
|
1370
|
-
typedef struct
|
1371
|
-
{
|
1372
|
-
FIT_UINT8 reserved_1;
|
1373
|
-
FIT_UINT8 arch;
|
1374
|
-
FIT_MESG_NUM global_mesg_num;
|
1375
|
-
FIT_UINT8 num_fields;
|
1376
|
-
FIT_UINT8 fields[FIT_SESSION_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1377
|
-
} FIT_SESSION_MESG_DEF;
|
1378
|
-
|
1379
|
-
#define FIT_SESSION_MESG_DEF_SIZE 107
|
1380
|
-
|
1381
|
-
|
1382
|
-
typedef struct
|
1383
|
-
{
|
1384
|
-
FIT_DATE_TIME timestamp; // s, Lap end time.
|
1385
|
-
FIT_DATE_TIME start_time; //
|
1386
|
-
FIT_SINT32 start_position_lat; // semicircles, **** Invalid is lat & long both 0x7FFFFFFF! Deg = 180 / (2^31)
|
1387
|
-
FIT_SINT32 start_position_long; // semicircles, **** Invalid is lat & long both 0x7FFFFFFF! Deg = 180 / (2^31)
|
1388
|
-
FIT_SINT32 end_position_lat; // semicircles, **** Invalid is lat & long both 0x7FFFFFFF! Deg = 180 / (2^31)
|
1389
|
-
FIT_SINT32 end_position_long; // semicircles, **** Invalid is lat & long both 0x7FFFFFFF! Deg = 180 / (2^31)
|
1390
|
-
FIT_UINT32 total_elapsed_time; // 1000.000 * s, Time (includes pauses)
|
1391
|
-
FIT_UINT32 total_timer_time; // 1000.000 * s, Timer Time (excludes pauses)
|
1392
|
-
FIT_UINT32 total_distance; // 100.000 * m,
|
1393
|
-
FIT_UINT32 total_cycles; // cycles,
|
1394
|
-
FIT_SINT32 nec_lat; // semicircles,
|
1395
|
-
FIT_SINT32 nec_long; // semicircles,
|
1396
|
-
FIT_SINT32 swc_lat; // semicircles,
|
1397
|
-
FIT_SINT32 swc_long; // semicircles,
|
1398
|
-
FIT_MESSAGE_INDEX message_index; //
|
1399
|
-
FIT_UINT16 total_calories; // kcal,
|
1400
|
-
FIT_UINT16 total_fat_calories; // kcal, If New Leaf
|
1401
|
-
FIT_UINT16 avg_speed; // 1000.000 * m/s,
|
1402
|
-
FIT_UINT16 max_speed; // 1000.000 * m/s,
|
1403
|
-
FIT_UINT16 avg_power; // watts, total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time
|
1404
|
-
FIT_UINT16 max_power; // watts,
|
1405
|
-
FIT_UINT16 total_ascent; // m,
|
1406
|
-
FIT_UINT16 total_descent; // m,
|
1407
|
-
FIT_EVENT event; // default = lap,
|
1408
|
-
FIT_EVENT_TYPE event_type; // default = consecutive,
|
1409
|
-
FIT_UINT8 avg_heart_rate; // bpm,
|
1410
|
-
FIT_UINT8 max_heart_rate; // bpm,
|
1411
|
-
FIT_UINT8 avg_cadence; // rpm, total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time
|
1412
|
-
FIT_UINT8 max_cadence; // rpm,
|
1413
|
-
FIT_INTENSITY intensity; //
|
1414
|
-
FIT_LAP_TRIGGER lap_trigger; //
|
1415
|
-
FIT_SPORT sport; //
|
1416
|
-
FIT_UINT8 event_group; //
|
1417
|
-
} FIT_LAP_MESG;
|
1418
|
-
|
1419
|
-
#define FIT_LAP_MESG_SIZE 84
|
1420
|
-
|
1421
|
-
typedef enum
|
1422
|
-
{
|
1423
|
-
FIT_LAP_FIELD_NUM_TIMESTAMP = 253,
|
1424
|
-
FIT_LAP_FIELD_NUM_START_TIME = 2,
|
1425
|
-
FIT_LAP_FIELD_NUM_START_POSITION_LAT = 3,
|
1426
|
-
FIT_LAP_FIELD_NUM_START_POSITION_LONG = 4,
|
1427
|
-
FIT_LAP_FIELD_NUM_END_POSITION_LAT = 5,
|
1428
|
-
FIT_LAP_FIELD_NUM_END_POSITION_LONG = 6,
|
1429
|
-
FIT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME = 7,
|
1430
|
-
FIT_LAP_FIELD_NUM_TOTAL_TIMER_TIME = 8,
|
1431
|
-
FIT_LAP_FIELD_NUM_TOTAL_DISTANCE = 9,
|
1432
|
-
FIT_LAP_FIELD_NUM_TOTAL_CYCLES = 10,
|
1433
|
-
FIT_LAP_FIELD_NUM_NEC_LAT = 27,
|
1434
|
-
FIT_LAP_FIELD_NUM_NEC_LONG = 28,
|
1435
|
-
FIT_LAP_FIELD_NUM_SWC_LAT = 29,
|
1436
|
-
FIT_LAP_FIELD_NUM_SWC_LONG = 30,
|
1437
|
-
FIT_LAP_FIELD_NUM_MESSAGE_INDEX = 254,
|
1438
|
-
FIT_LAP_FIELD_NUM_TOTAL_CALORIES = 11,
|
1439
|
-
FIT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES = 12,
|
1440
|
-
FIT_LAP_FIELD_NUM_AVG_SPEED = 13,
|
1441
|
-
FIT_LAP_FIELD_NUM_MAX_SPEED = 14,
|
1442
|
-
FIT_LAP_FIELD_NUM_AVG_POWER = 19,
|
1443
|
-
FIT_LAP_FIELD_NUM_MAX_POWER = 20,
|
1444
|
-
FIT_LAP_FIELD_NUM_TOTAL_ASCENT = 21,
|
1445
|
-
FIT_LAP_FIELD_NUM_TOTAL_DESCENT = 22,
|
1446
|
-
FIT_LAP_FIELD_NUM_EVENT = 0,
|
1447
|
-
FIT_LAP_FIELD_NUM_EVENT_TYPE = 1,
|
1448
|
-
FIT_LAP_FIELD_NUM_AVG_HEART_RATE = 15,
|
1449
|
-
FIT_LAP_FIELD_NUM_MAX_HEART_RATE = 16,
|
1450
|
-
FIT_LAP_FIELD_NUM_AVG_CADENCE = 17,
|
1451
|
-
FIT_LAP_FIELD_NUM_MAX_CADENCE = 18,
|
1452
|
-
FIT_LAP_FIELD_NUM_INTENSITY = 23,
|
1453
|
-
FIT_LAP_FIELD_NUM_LAP_TRIGGER = 24,
|
1454
|
-
FIT_LAP_FIELD_NUM_SPORT = 25,
|
1455
|
-
FIT_LAP_FIELD_NUM_EVENT_GROUP = 26
|
1456
|
-
} FIT_LAP_FIELD_NUM;
|
1457
|
-
|
1458
|
-
typedef enum
|
1459
|
-
{
|
1460
|
-
FIT_LAP_MESG_TIMESTAMP,
|
1461
|
-
FIT_LAP_MESG_START_TIME,
|
1462
|
-
FIT_LAP_MESG_START_POSITION_LAT,
|
1463
|
-
FIT_LAP_MESG_START_POSITION_LONG,
|
1464
|
-
FIT_LAP_MESG_END_POSITION_LAT,
|
1465
|
-
FIT_LAP_MESG_END_POSITION_LONG,
|
1466
|
-
FIT_LAP_MESG_TOTAL_ELAPSED_TIME,
|
1467
|
-
FIT_LAP_MESG_TOTAL_TIMER_TIME,
|
1468
|
-
FIT_LAP_MESG_TOTAL_DISTANCE,
|
1469
|
-
FIT_LAP_MESG_TOTAL_CYCLES,
|
1470
|
-
FIT_LAP_MESG_NEC_LAT,
|
1471
|
-
FIT_LAP_MESG_NEC_LONG,
|
1472
|
-
FIT_LAP_MESG_SWC_LAT,
|
1473
|
-
FIT_LAP_MESG_SWC_LONG,
|
1474
|
-
FIT_LAP_MESG_MESSAGE_INDEX,
|
1475
|
-
FIT_LAP_MESG_TOTAL_CALORIES,
|
1476
|
-
FIT_LAP_MESG_TOTAL_FAT_CALORIES,
|
1477
|
-
FIT_LAP_MESG_AVG_SPEED,
|
1478
|
-
FIT_LAP_MESG_MAX_SPEED,
|
1479
|
-
FIT_LAP_MESG_AVG_POWER,
|
1480
|
-
FIT_LAP_MESG_MAX_POWER,
|
1481
|
-
FIT_LAP_MESG_TOTAL_ASCENT,
|
1482
|
-
FIT_LAP_MESG_TOTAL_DESCENT,
|
1483
|
-
FIT_LAP_MESG_EVENT,
|
1484
|
-
FIT_LAP_MESG_EVENT_TYPE,
|
1485
|
-
FIT_LAP_MESG_AVG_HEART_RATE,
|
1486
|
-
FIT_LAP_MESG_MAX_HEART_RATE,
|
1487
|
-
FIT_LAP_MESG_AVG_CADENCE,
|
1488
|
-
FIT_LAP_MESG_MAX_CADENCE,
|
1489
|
-
FIT_LAP_MESG_INTENSITY,
|
1490
|
-
FIT_LAP_MESG_LAP_TRIGGER,
|
1491
|
-
FIT_LAP_MESG_SPORT,
|
1492
|
-
FIT_LAP_MESG_EVENT_GROUP,
|
1493
|
-
FIT_LAP_MESG_FIELDS
|
1494
|
-
} FIT_LAP_MESG_FIELD;
|
1495
|
-
|
1496
|
-
typedef struct
|
1497
|
-
{
|
1498
|
-
FIT_UINT8 reserved_1;
|
1499
|
-
FIT_UINT8 arch;
|
1500
|
-
FIT_MESG_NUM global_mesg_num;
|
1501
|
-
FIT_UINT8 num_fields;
|
1502
|
-
FIT_UINT8 fields[FIT_LAP_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1503
|
-
} FIT_LAP_MESG_DEF;
|
1504
|
-
|
1505
|
-
#define FIT_LAP_MESG_DEF_SIZE 104
|
1506
|
-
|
1507
|
-
#define FIT_RECORD_MESG_COMPRESSED_SPEED_DISTANCE_COUNT 3
|
1508
|
-
|
1509
|
-
typedef struct
|
1510
|
-
{
|
1511
|
-
FIT_DATE_TIME timestamp; // s,
|
1512
|
-
FIT_SINT32 position_lat; // semicircles, **** Invalid is lat & long both 0x7FFFFFFF! Deg = 180 / (2^31)
|
1513
|
-
FIT_SINT32 position_long; // semicircles, **** Invalid is lat & long both 0x7FFFFFFF! Deg = 180 / (2^31)
|
1514
|
-
FIT_UINT32 distance; // 100.000 * m,
|
1515
|
-
FIT_SINT32 time_from_course; // 1000.000 * s, required?
|
1516
|
-
FIT_BYTE compressed_speed_distance[FIT_RECORD_MESG_COMPRESSED_SPEED_DISTANCE_COUNT]; //
|
1517
|
-
FIT_UINT8 heart_rate; // bpm,
|
1518
|
-
FIT_UINT16 altitude; // 5.000 * (m + 500.000),
|
1519
|
-
FIT_UINT16 speed; // 1000.000 * m/s, Max 65.5m/s or 234km/hr
|
1520
|
-
FIT_UINT16 power; // watts,
|
1521
|
-
FIT_SINT16 grade; // 100.000 * %,
|
1522
|
-
FIT_UINT8 cadence; // rpm, Running CAD Bike CAD Rowing CAD
|
1523
|
-
FIT_UINT8 resistance; // Relative. 0 is none 254 is Max.
|
1524
|
-
FIT_UINT8 cycle_length; // 100.000 * m,
|
1525
|
-
FIT_SINT8 temperature; // �C,
|
1526
|
-
} FIT_RECORD_MESG;
|
1527
|
-
|
1528
|
-
#define FIT_RECORD_MESG_SIZE 36
|
1529
|
-
|
1530
|
-
typedef enum
|
1531
|
-
{
|
1532
|
-
FIT_RECORD_FIELD_NUM_TIMESTAMP = 253,
|
1533
|
-
FIT_RECORD_FIELD_NUM_POSITION_LAT = 0,
|
1534
|
-
FIT_RECORD_FIELD_NUM_POSITION_LONG = 1,
|
1535
|
-
FIT_RECORD_FIELD_NUM_DISTANCE = 5,
|
1536
|
-
FIT_RECORD_FIELD_NUM_TIME_FROM_COURSE = 11,
|
1537
|
-
FIT_RECORD_FIELD_NUM_COMPRESSED_SPEED_DISTANCE = 8,
|
1538
|
-
FIT_RECORD_FIELD_NUM_HEART_RATE = 3,
|
1539
|
-
FIT_RECORD_FIELD_NUM_ALTITUDE = 2,
|
1540
|
-
FIT_RECORD_FIELD_NUM_SPEED = 6,
|
1541
|
-
FIT_RECORD_FIELD_NUM_POWER = 7,
|
1542
|
-
FIT_RECORD_FIELD_NUM_GRADE = 9,
|
1543
|
-
FIT_RECORD_FIELD_NUM_CADENCE = 4,
|
1544
|
-
FIT_RECORD_FIELD_NUM_RESISTANCE = 10,
|
1545
|
-
FIT_RECORD_FIELD_NUM_CYCLE_LENGTH = 12,
|
1546
|
-
FIT_RECORD_FIELD_NUM_TEMPERATURE = 13
|
1547
|
-
} FIT_RECORD_FIELD_NUM;
|
1548
|
-
|
1549
|
-
typedef enum
|
1550
|
-
{
|
1551
|
-
FIT_RECORD_MESG_TIMESTAMP,
|
1552
|
-
FIT_RECORD_MESG_POSITION_LAT,
|
1553
|
-
FIT_RECORD_MESG_POSITION_LONG,
|
1554
|
-
FIT_RECORD_MESG_DISTANCE,
|
1555
|
-
FIT_RECORD_MESG_TIME_FROM_COURSE,
|
1556
|
-
FIT_RECORD_MESG_COMPRESSED_SPEED_DISTANCE,
|
1557
|
-
FIT_RECORD_MESG_HEART_RATE,
|
1558
|
-
FIT_RECORD_MESG_ALTITUDE,
|
1559
|
-
FIT_RECORD_MESG_SPEED,
|
1560
|
-
FIT_RECORD_MESG_POWER,
|
1561
|
-
FIT_RECORD_MESG_GRADE,
|
1562
|
-
FIT_RECORD_MESG_CADENCE,
|
1563
|
-
FIT_RECORD_MESG_RESISTANCE,
|
1564
|
-
FIT_RECORD_MESG_CYCLE_LENGTH,
|
1565
|
-
FIT_RECORD_MESG_TEMPERATURE,
|
1566
|
-
FIT_RECORD_MESG_FIELDS
|
1567
|
-
} FIT_RECORD_MESG_FIELD;
|
1568
|
-
|
1569
|
-
typedef struct
|
1570
|
-
{
|
1571
|
-
FIT_UINT8 reserved_1;
|
1572
|
-
FIT_UINT8 arch;
|
1573
|
-
FIT_MESG_NUM global_mesg_num;
|
1574
|
-
FIT_UINT8 num_fields;
|
1575
|
-
FIT_UINT8 fields[FIT_RECORD_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1576
|
-
} FIT_RECORD_MESG_DEF;
|
1577
|
-
|
1578
|
-
#define FIT_RECORD_MESG_DEF_SIZE 50
|
1579
|
-
|
1580
|
-
|
1581
|
-
typedef struct
|
1582
|
-
{
|
1583
|
-
FIT_DATE_TIME timestamp; // s,
|
1584
|
-
FIT_UINT32 data; //
|
1585
|
-
FIT_UINT16 data16; //
|
1586
|
-
FIT_EVENT event; //
|
1587
|
-
FIT_EVENT_TYPE event_type; //
|
1588
|
-
FIT_UINT8 event_group; //
|
1589
|
-
} FIT_EVENT_MESG;
|
1590
|
-
|
1591
|
-
#define FIT_EVENT_MESG_SIZE 13
|
1592
|
-
|
1593
|
-
typedef enum
|
1594
|
-
{
|
1595
|
-
FIT_EVENT_FIELD_NUM_TIMESTAMP = 253,
|
1596
|
-
FIT_EVENT_FIELD_NUM_DATA = 3,
|
1597
|
-
FIT_EVENT_FIELD_NUM_DATA16 = 2,
|
1598
|
-
FIT_EVENT_FIELD_NUM_EVENT = 0,
|
1599
|
-
FIT_EVENT_FIELD_NUM_EVENT_TYPE = 1,
|
1600
|
-
FIT_EVENT_FIELD_NUM_EVENT_GROUP = 4
|
1601
|
-
} FIT_EVENT_FIELD_NUM;
|
1602
|
-
|
1603
|
-
typedef enum
|
1604
|
-
{
|
1605
|
-
FIT_EVENT_MESG_TIMESTAMP,
|
1606
|
-
FIT_EVENT_MESG_DATA,
|
1607
|
-
FIT_EVENT_MESG_DATA16,
|
1608
|
-
FIT_EVENT_MESG_EVENT,
|
1609
|
-
FIT_EVENT_MESG_EVENT_TYPE,
|
1610
|
-
FIT_EVENT_MESG_EVENT_GROUP,
|
1611
|
-
FIT_EVENT_MESG_FIELDS
|
1612
|
-
} FIT_EVENT_MESG_FIELD;
|
1613
|
-
|
1614
|
-
typedef struct
|
1615
|
-
{
|
1616
|
-
FIT_UINT8 reserved_1;
|
1617
|
-
FIT_UINT8 arch;
|
1618
|
-
FIT_MESG_NUM global_mesg_num;
|
1619
|
-
FIT_UINT8 num_fields;
|
1620
|
-
FIT_UINT8 fields[FIT_EVENT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1621
|
-
} FIT_EVENT_MESG_DEF;
|
1622
|
-
|
1623
|
-
#define FIT_EVENT_MESG_DEF_SIZE 23
|
1624
|
-
|
1625
|
-
|
1626
|
-
typedef struct
|
1627
|
-
{
|
1628
|
-
FIT_DATE_TIME timestamp; // s,
|
1629
|
-
FIT_UINT32Z serial_number; //
|
1630
|
-
FIT_MANUFACTURER manufacturer; //
|
1631
|
-
FIT_UINT16 product; //
|
1632
|
-
FIT_UINT16 software_version; //
|
1633
|
-
FIT_UINT16 battery_voltage; // 256.000 * V,
|
1634
|
-
FIT_DEVICE_INDEX device_index; //
|
1635
|
-
FIT_DEVICE_TYPE device_type; //
|
1636
|
-
FIT_UINT8 hardware_version; //
|
1637
|
-
FIT_BATTERY_STATUS battery_status; //
|
1638
|
-
} FIT_DEVICE_INFO_MESG;
|
1639
|
-
|
1640
|
-
#define FIT_DEVICE_INFO_MESG_SIZE 20
|
1641
|
-
|
1642
|
-
typedef enum
|
1643
|
-
{
|
1644
|
-
FIT_DEVICE_INFO_FIELD_NUM_TIMESTAMP = 253,
|
1645
|
-
FIT_DEVICE_INFO_FIELD_NUM_SERIAL_NUMBER = 3,
|
1646
|
-
FIT_DEVICE_INFO_FIELD_NUM_MANUFACTURER = 2,
|
1647
|
-
FIT_DEVICE_INFO_FIELD_NUM_PRODUCT = 4,
|
1648
|
-
FIT_DEVICE_INFO_FIELD_NUM_SOFTWARE_VERSION = 5,
|
1649
|
-
FIT_DEVICE_INFO_FIELD_NUM_BATTERY_VOLTAGE = 10,
|
1650
|
-
FIT_DEVICE_INFO_FIELD_NUM_DEVICE_INDEX = 0,
|
1651
|
-
FIT_DEVICE_INFO_FIELD_NUM_DEVICE_TYPE = 1,
|
1652
|
-
FIT_DEVICE_INFO_FIELD_NUM_HARDWARE_VERSION = 6,
|
1653
|
-
FIT_DEVICE_INFO_FIELD_NUM_BATTERY_STATUS = 11
|
1654
|
-
} FIT_DEVICE_INFO_FIELD_NUM;
|
1655
|
-
|
1656
|
-
typedef enum
|
1657
|
-
{
|
1658
|
-
FIT_DEVICE_INFO_MESG_TIMESTAMP,
|
1659
|
-
FIT_DEVICE_INFO_MESG_SERIAL_NUMBER,
|
1660
|
-
FIT_DEVICE_INFO_MESG_MANUFACTURER,
|
1661
|
-
FIT_DEVICE_INFO_MESG_PRODUCT,
|
1662
|
-
FIT_DEVICE_INFO_MESG_SOFTWARE_VERSION,
|
1663
|
-
FIT_DEVICE_INFO_MESG_BATTERY_VOLTAGE,
|
1664
|
-
FIT_DEVICE_INFO_MESG_DEVICE_INDEX,
|
1665
|
-
FIT_DEVICE_INFO_MESG_DEVICE_TYPE,
|
1666
|
-
FIT_DEVICE_INFO_MESG_HARDWARE_VERSION,
|
1667
|
-
FIT_DEVICE_INFO_MESG_BATTERY_STATUS,
|
1668
|
-
FIT_DEVICE_INFO_MESG_FIELDS
|
1669
|
-
} FIT_DEVICE_INFO_MESG_FIELD;
|
1670
|
-
|
1671
|
-
typedef struct
|
1672
|
-
{
|
1673
|
-
FIT_UINT8 reserved_1;
|
1674
|
-
FIT_UINT8 arch;
|
1675
|
-
FIT_MESG_NUM global_mesg_num;
|
1676
|
-
FIT_UINT8 num_fields;
|
1677
|
-
FIT_UINT8 fields[FIT_DEVICE_INFO_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1678
|
-
} FIT_DEVICE_INFO_MESG_DEF;
|
1679
|
-
|
1680
|
-
#define FIT_DEVICE_INFO_MESG_DEF_SIZE 35
|
1681
|
-
|
1682
|
-
#define FIT_COURSE_MESG_NAME_COUNT 16
|
1683
|
-
|
1684
|
-
typedef struct
|
1685
|
-
{
|
1686
|
-
FIT_STRING name[FIT_COURSE_MESG_NAME_COUNT]; //
|
1687
|
-
FIT_COURSE_CAPABILITIES capabilities; //
|
1688
|
-
FIT_SPORT sport; //
|
1689
|
-
} FIT_COURSE_MESG;
|
1690
|
-
|
1691
|
-
#define FIT_COURSE_MESG_SIZE 21
|
1692
|
-
|
1693
|
-
typedef enum
|
1694
|
-
{
|
1695
|
-
FIT_COURSE_FIELD_NUM_NAME = 5,
|
1696
|
-
FIT_COURSE_FIELD_NUM_CAPABILITIES = 6,
|
1697
|
-
FIT_COURSE_FIELD_NUM_SPORT = 4
|
1698
|
-
} FIT_COURSE_FIELD_NUM;
|
1699
|
-
|
1700
|
-
typedef enum
|
1701
|
-
{
|
1702
|
-
FIT_COURSE_MESG_NAME,
|
1703
|
-
FIT_COURSE_MESG_CAPABILITIES,
|
1704
|
-
FIT_COURSE_MESG_SPORT,
|
1705
|
-
FIT_COURSE_MESG_FIELDS
|
1706
|
-
} FIT_COURSE_MESG_FIELD;
|
1707
|
-
|
1708
|
-
typedef struct
|
1709
|
-
{
|
1710
|
-
FIT_UINT8 reserved_1;
|
1711
|
-
FIT_UINT8 arch;
|
1712
|
-
FIT_MESG_NUM global_mesg_num;
|
1713
|
-
FIT_UINT8 num_fields;
|
1714
|
-
FIT_UINT8 fields[FIT_COURSE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1715
|
-
} FIT_COURSE_MESG_DEF;
|
1716
|
-
|
1717
|
-
#define FIT_COURSE_MESG_DEF_SIZE 14
|
1718
|
-
|
1719
|
-
#define FIT_COURSE_POINT_MESG_NAME_COUNT 16
|
1720
|
-
|
1721
|
-
typedef struct
|
1722
|
-
{
|
1723
|
-
FIT_UINT32 time; //
|
1724
|
-
FIT_SINT32 position_lat; // semicircles,
|
1725
|
-
FIT_SINT32 position_long; // semicircles,
|
1726
|
-
FIT_UINT32 distance; // 100.000 * m,
|
1727
|
-
FIT_STRING name[FIT_COURSE_POINT_MESG_NAME_COUNT]; //
|
1728
|
-
FIT_MESSAGE_INDEX message_index; //
|
1729
|
-
FIT_COURSE_POINT type; //
|
1730
|
-
} FIT_COURSE_POINT_MESG;
|
1731
|
-
|
1732
|
-
#define FIT_COURSE_POINT_MESG_SIZE 35
|
1733
|
-
|
1734
|
-
typedef enum
|
1735
|
-
{
|
1736
|
-
FIT_COURSE_POINT_FIELD_NUM_TIME = 1,
|
1737
|
-
FIT_COURSE_POINT_FIELD_NUM_POSITION_LAT = 2,
|
1738
|
-
FIT_COURSE_POINT_FIELD_NUM_POSITION_LONG = 3,
|
1739
|
-
FIT_COURSE_POINT_FIELD_NUM_DISTANCE = 4,
|
1740
|
-
FIT_COURSE_POINT_FIELD_NUM_NAME = 6,
|
1741
|
-
FIT_COURSE_POINT_FIELD_NUM_MESSAGE_INDEX = 254,
|
1742
|
-
FIT_COURSE_POINT_FIELD_NUM_TYPE = 5
|
1743
|
-
} FIT_COURSE_POINT_FIELD_NUM;
|
1744
|
-
|
1745
|
-
typedef enum
|
1746
|
-
{
|
1747
|
-
FIT_COURSE_POINT_MESG_TIME,
|
1748
|
-
FIT_COURSE_POINT_MESG_POSITION_LAT,
|
1749
|
-
FIT_COURSE_POINT_MESG_POSITION_LONG,
|
1750
|
-
FIT_COURSE_POINT_MESG_DISTANCE,
|
1751
|
-
FIT_COURSE_POINT_MESG_NAME,
|
1752
|
-
FIT_COURSE_POINT_MESG_MESSAGE_INDEX,
|
1753
|
-
FIT_COURSE_POINT_MESG_TYPE,
|
1754
|
-
FIT_COURSE_POINT_MESG_FIELDS
|
1755
|
-
} FIT_COURSE_POINT_MESG_FIELD;
|
1756
|
-
|
1757
|
-
typedef struct
|
1758
|
-
{
|
1759
|
-
FIT_UINT8 reserved_1;
|
1760
|
-
FIT_UINT8 arch;
|
1761
|
-
FIT_MESG_NUM global_mesg_num;
|
1762
|
-
FIT_UINT8 num_fields;
|
1763
|
-
FIT_UINT8 fields[FIT_COURSE_POINT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1764
|
-
} FIT_COURSE_POINT_MESG_DEF;
|
1765
|
-
|
1766
|
-
#define FIT_COURSE_POINT_MESG_DEF_SIZE 26
|
1767
|
-
|
1768
|
-
#define FIT_WORKOUT_MESG_WKT_NAME_COUNT 16
|
1769
|
-
|
1770
|
-
typedef struct
|
1771
|
-
{
|
1772
|
-
FIT_WORKOUT_CAPABILITIES capabilities; //
|
1773
|
-
FIT_STRING wkt_name[FIT_WORKOUT_MESG_WKT_NAME_COUNT]; //
|
1774
|
-
FIT_UINT16 num_valid_steps; // number of valid steps
|
1775
|
-
FIT_UINT16 protection; // some simple hash of the unit id and workout id for the unit to check. Allows this workout to only be run on the particular unit id
|
1776
|
-
FIT_SPORT sport; //
|
1777
|
-
} FIT_WORKOUT_MESG;
|
1778
|
-
|
1779
|
-
#define FIT_WORKOUT_MESG_SIZE 25
|
1780
|
-
|
1781
|
-
typedef enum
|
1782
|
-
{
|
1783
|
-
FIT_WORKOUT_FIELD_NUM_CAPABILITIES = 5,
|
1784
|
-
FIT_WORKOUT_FIELD_NUM_WKT_NAME = 8,
|
1785
|
-
FIT_WORKOUT_FIELD_NUM_NUM_VALID_STEPS = 6,
|
1786
|
-
FIT_WORKOUT_FIELD_NUM_PROTECTION = 7,
|
1787
|
-
FIT_WORKOUT_FIELD_NUM_SPORT = 4
|
1788
|
-
} FIT_WORKOUT_FIELD_NUM;
|
1789
|
-
|
1790
|
-
typedef enum
|
1791
|
-
{
|
1792
|
-
FIT_WORKOUT_MESG_CAPABILITIES,
|
1793
|
-
FIT_WORKOUT_MESG_WKT_NAME,
|
1794
|
-
FIT_WORKOUT_MESG_NUM_VALID_STEPS,
|
1795
|
-
FIT_WORKOUT_MESG_PROTECTION,
|
1796
|
-
FIT_WORKOUT_MESG_SPORT,
|
1797
|
-
FIT_WORKOUT_MESG_FIELDS
|
1798
|
-
} FIT_WORKOUT_MESG_FIELD;
|
1799
|
-
|
1800
|
-
typedef struct
|
1801
|
-
{
|
1802
|
-
FIT_UINT8 reserved_1;
|
1803
|
-
FIT_UINT8 arch;
|
1804
|
-
FIT_MESG_NUM global_mesg_num;
|
1805
|
-
FIT_UINT8 num_fields;
|
1806
|
-
FIT_UINT8 fields[FIT_WORKOUT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1807
|
-
} FIT_WORKOUT_MESG_DEF;
|
1808
|
-
|
1809
|
-
#define FIT_WORKOUT_MESG_DEF_SIZE 20
|
1810
|
-
|
1811
|
-
#define FIT_WORKOUT_STEP_MESG_WKT_STEP_NAME_COUNT 16
|
1812
|
-
|
1813
|
-
typedef struct
|
1814
|
-
{
|
1815
|
-
FIT_STRING wkt_step_name[FIT_WORKOUT_STEP_MESG_WKT_STEP_NAME_COUNT]; //
|
1816
|
-
FIT_UINT32 duration_value; //
|
1817
|
-
FIT_UINT32 target_value; //
|
1818
|
-
FIT_UINT32 custom_target_value_low; // could have # of target types
|
1819
|
-
FIT_UINT32 custom_target_value_high; //
|
1820
|
-
FIT_MESSAGE_INDEX message_index; //
|
1821
|
-
FIT_WKT_STEP_DURATION duration_type; //
|
1822
|
-
FIT_WKT_STEP_TARGET target_type; //
|
1823
|
-
FIT_INTENSITY intensity; // rest step?
|
1824
|
-
} FIT_WORKOUT_STEP_MESG;
|
1825
|
-
|
1826
|
-
#define FIT_WORKOUT_STEP_MESG_SIZE 37
|
1827
|
-
|
1828
|
-
typedef enum
|
1829
|
-
{
|
1830
|
-
FIT_WORKOUT_STEP_FIELD_NUM_WKT_STEP_NAME = 0,
|
1831
|
-
FIT_WORKOUT_STEP_FIELD_NUM_DURATION_VALUE = 2,
|
1832
|
-
FIT_WORKOUT_STEP_FIELD_NUM_TARGET_VALUE = 4,
|
1833
|
-
FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_LOW = 5,
|
1834
|
-
FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_HIGH = 6,
|
1835
|
-
FIT_WORKOUT_STEP_FIELD_NUM_MESSAGE_INDEX = 254,
|
1836
|
-
FIT_WORKOUT_STEP_FIELD_NUM_DURATION_TYPE = 1,
|
1837
|
-
FIT_WORKOUT_STEP_FIELD_NUM_TARGET_TYPE = 3,
|
1838
|
-
FIT_WORKOUT_STEP_FIELD_NUM_INTENSITY = 7
|
1839
|
-
} FIT_WORKOUT_STEP_FIELD_NUM;
|
1840
|
-
|
1841
|
-
typedef enum
|
1842
|
-
{
|
1843
|
-
FIT_WORKOUT_STEP_MESG_WKT_STEP_NAME,
|
1844
|
-
FIT_WORKOUT_STEP_MESG_DURATION_VALUE,
|
1845
|
-
FIT_WORKOUT_STEP_MESG_TARGET_VALUE,
|
1846
|
-
FIT_WORKOUT_STEP_MESG_CUSTOM_TARGET_VALUE_LOW,
|
1847
|
-
FIT_WORKOUT_STEP_MESG_CUSTOM_TARGET_VALUE_HIGH,
|
1848
|
-
FIT_WORKOUT_STEP_MESG_MESSAGE_INDEX,
|
1849
|
-
FIT_WORKOUT_STEP_MESG_DURATION_TYPE,
|
1850
|
-
FIT_WORKOUT_STEP_MESG_TARGET_TYPE,
|
1851
|
-
FIT_WORKOUT_STEP_MESG_INTENSITY,
|
1852
|
-
FIT_WORKOUT_STEP_MESG_FIELDS
|
1853
|
-
} FIT_WORKOUT_STEP_MESG_FIELD;
|
1854
|
-
|
1855
|
-
typedef struct
|
1856
|
-
{
|
1857
|
-
FIT_UINT8 reserved_1;
|
1858
|
-
FIT_UINT8 arch;
|
1859
|
-
FIT_MESG_NUM global_mesg_num;
|
1860
|
-
FIT_UINT8 num_fields;
|
1861
|
-
FIT_UINT8 fields[FIT_WORKOUT_STEP_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1862
|
-
} FIT_WORKOUT_STEP_MESG_DEF;
|
1863
|
-
|
1864
|
-
#define FIT_WORKOUT_STEP_MESG_DEF_SIZE 32
|
1865
|
-
|
1866
|
-
|
1867
|
-
typedef struct
|
1868
|
-
{
|
1869
|
-
FIT_UINT32Z serial_number; // Corresponds to file_id of scheduled workout / course.
|
1870
|
-
FIT_DATE_TIME time_created; // Corresponds to file_id of scheduled workout / course.
|
1871
|
-
FIT_DATE_TIME scheduled_time; //
|
1872
|
-
FIT_MANUFACTURER manufacturer; // Corresponds to file_id of scheduled workout / course.
|
1873
|
-
FIT_UINT16 product; // Corresponds to file_id of scheduled workout / course.
|
1874
|
-
FIT_BOOL completed; // TRUE if this activity has been started
|
1875
|
-
FIT_SCHEDULE type; //
|
1876
|
-
} FIT_SCHEDULE_MESG;
|
1877
|
-
|
1878
|
-
#define FIT_SCHEDULE_MESG_SIZE 18
|
1879
|
-
|
1880
|
-
typedef enum
|
1881
|
-
{
|
1882
|
-
FIT_SCHEDULE_FIELD_NUM_SERIAL_NUMBER = 2,
|
1883
|
-
FIT_SCHEDULE_FIELD_NUM_TIME_CREATED = 3,
|
1884
|
-
FIT_SCHEDULE_FIELD_NUM_SCHEDULED_TIME = 6,
|
1885
|
-
FIT_SCHEDULE_FIELD_NUM_MANUFACTURER = 0,
|
1886
|
-
FIT_SCHEDULE_FIELD_NUM_PRODUCT = 1,
|
1887
|
-
FIT_SCHEDULE_FIELD_NUM_COMPLETED = 4,
|
1888
|
-
FIT_SCHEDULE_FIELD_NUM_TYPE = 5
|
1889
|
-
} FIT_SCHEDULE_FIELD_NUM;
|
1890
|
-
|
1891
|
-
typedef enum
|
1892
|
-
{
|
1893
|
-
FIT_SCHEDULE_MESG_SERIAL_NUMBER,
|
1894
|
-
FIT_SCHEDULE_MESG_TIME_CREATED,
|
1895
|
-
FIT_SCHEDULE_MESG_SCHEDULED_TIME,
|
1896
|
-
FIT_SCHEDULE_MESG_MANUFACTURER,
|
1897
|
-
FIT_SCHEDULE_MESG_PRODUCT,
|
1898
|
-
FIT_SCHEDULE_MESG_COMPLETED,
|
1899
|
-
FIT_SCHEDULE_MESG_TYPE,
|
1900
|
-
FIT_SCHEDULE_MESG_FIELDS
|
1901
|
-
} FIT_SCHEDULE_MESG_FIELD;
|
1902
|
-
|
1903
|
-
typedef struct
|
1904
|
-
{
|
1905
|
-
FIT_UINT8 reserved_1;
|
1906
|
-
FIT_UINT8 arch;
|
1907
|
-
FIT_MESG_NUM global_mesg_num;
|
1908
|
-
FIT_UINT8 num_fields;
|
1909
|
-
FIT_UINT8 fields[FIT_SCHEDULE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1910
|
-
} FIT_SCHEDULE_MESG_DEF;
|
1911
|
-
|
1912
|
-
#define FIT_SCHEDULE_MESG_DEF_SIZE 26
|
1913
|
-
|
1914
|
-
|
1915
|
-
typedef struct
|
1916
|
-
{
|
1917
|
-
FIT_DATE_TIME timestamp; // s,
|
1918
|
-
FIT_UINT32 timer_time; // s, Excludes pauses
|
1919
|
-
FIT_UINT32 distance; // m,
|
1920
|
-
FIT_UINT32 calories; // kcal,
|
1921
|
-
FIT_MESSAGE_INDEX message_index; //
|
1922
|
-
FIT_SPORT sport; //
|
1923
|
-
} FIT_TOTALS_MESG;
|
1924
|
-
|
1925
|
-
#define FIT_TOTALS_MESG_SIZE 19
|
1926
|
-
|
1927
|
-
typedef enum
|
1928
|
-
{
|
1929
|
-
FIT_TOTALS_FIELD_NUM_TIMESTAMP = 253,
|
1930
|
-
FIT_TOTALS_FIELD_NUM_TIMER_TIME = 0,
|
1931
|
-
FIT_TOTALS_FIELD_NUM_DISTANCE = 1,
|
1932
|
-
FIT_TOTALS_FIELD_NUM_CALORIES = 2,
|
1933
|
-
FIT_TOTALS_FIELD_NUM_MESSAGE_INDEX = 254,
|
1934
|
-
FIT_TOTALS_FIELD_NUM_SPORT = 3
|
1935
|
-
} FIT_TOTALS_FIELD_NUM;
|
1936
|
-
|
1937
|
-
typedef enum
|
1938
|
-
{
|
1939
|
-
FIT_TOTALS_MESG_TIMESTAMP,
|
1940
|
-
FIT_TOTALS_MESG_TIMER_TIME,
|
1941
|
-
FIT_TOTALS_MESG_DISTANCE,
|
1942
|
-
FIT_TOTALS_MESG_CALORIES,
|
1943
|
-
FIT_TOTALS_MESG_MESSAGE_INDEX,
|
1944
|
-
FIT_TOTALS_MESG_SPORT,
|
1945
|
-
FIT_TOTALS_MESG_FIELDS
|
1946
|
-
} FIT_TOTALS_MESG_FIELD;
|
1947
|
-
|
1948
|
-
typedef struct
|
1949
|
-
{
|
1950
|
-
FIT_UINT8 reserved_1;
|
1951
|
-
FIT_UINT8 arch;
|
1952
|
-
FIT_MESG_NUM global_mesg_num;
|
1953
|
-
FIT_UINT8 num_fields;
|
1954
|
-
FIT_UINT8 fields[FIT_TOTALS_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
1955
|
-
} FIT_TOTALS_MESG_DEF;
|
1956
|
-
|
1957
|
-
#define FIT_TOTALS_MESG_DEF_SIZE 23
|
1958
|
-
|
1959
|
-
|
1960
|
-
typedef struct
|
1961
|
-
{
|
1962
|
-
FIT_DATE_TIME timestamp; // s,
|
1963
|
-
FIT_WEIGHT weight; // 100.000 * kg,
|
1964
|
-
FIT_UINT16 percent_fat; // 100.000 * %,
|
1965
|
-
FIT_UINT16 percent_hydration; // 100.000 * %,
|
1966
|
-
FIT_UINT16 visceral_fat_mass; // 100.000 * kg,
|
1967
|
-
FIT_UINT16 bone_mass; // 100.000 * kg,
|
1968
|
-
FIT_UINT16 muscle_mass; // 100.000 * kg,
|
1969
|
-
FIT_UINT16 basal_met; // 4.000 * kcal/day,
|
1970
|
-
FIT_UINT16 active_met; // 4.000 * kcal/day, ~4kJ per kcal, 0.25 allows max 16384 kcal
|
1971
|
-
FIT_UINT8 physique_rating; //
|
1972
|
-
FIT_UINT8 metabolic_age; // years,
|
1973
|
-
FIT_UINT8 visceral_fat_rating; //
|
1974
|
-
} FIT_WEIGHT_SCALE_MESG;
|
1975
|
-
|
1976
|
-
#define FIT_WEIGHT_SCALE_MESG_SIZE 23
|
1977
|
-
|
1978
|
-
typedef enum
|
1979
|
-
{
|
1980
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_TIMESTAMP = 253,
|
1981
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_WEIGHT = 0,
|
1982
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_FAT = 1,
|
1983
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_HYDRATION = 2,
|
1984
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_MASS = 3,
|
1985
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_BONE_MASS = 4,
|
1986
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_MUSCLE_MASS = 5,
|
1987
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_BASAL_MET = 7,
|
1988
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_ACTIVE_MET = 9,
|
1989
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_PHYSIQUE_RATING = 8,
|
1990
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_METABOLIC_AGE = 10,
|
1991
|
-
FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_RATING = 11
|
1992
|
-
} FIT_WEIGHT_SCALE_FIELD_NUM;
|
1993
|
-
|
1994
|
-
typedef enum
|
1995
|
-
{
|
1996
|
-
FIT_WEIGHT_SCALE_MESG_TIMESTAMP,
|
1997
|
-
FIT_WEIGHT_SCALE_MESG_WEIGHT,
|
1998
|
-
FIT_WEIGHT_SCALE_MESG_PERCENT_FAT,
|
1999
|
-
FIT_WEIGHT_SCALE_MESG_PERCENT_HYDRATION,
|
2000
|
-
FIT_WEIGHT_SCALE_MESG_VISCERAL_FAT_MASS,
|
2001
|
-
FIT_WEIGHT_SCALE_MESG_BONE_MASS,
|
2002
|
-
FIT_WEIGHT_SCALE_MESG_MUSCLE_MASS,
|
2003
|
-
FIT_WEIGHT_SCALE_MESG_BASAL_MET,
|
2004
|
-
FIT_WEIGHT_SCALE_MESG_ACTIVE_MET,
|
2005
|
-
FIT_WEIGHT_SCALE_MESG_PHYSIQUE_RATING,
|
2006
|
-
FIT_WEIGHT_SCALE_MESG_METABOLIC_AGE,
|
2007
|
-
FIT_WEIGHT_SCALE_MESG_VISCERAL_FAT_RATING,
|
2008
|
-
FIT_WEIGHT_SCALE_MESG_FIELDS
|
2009
|
-
} FIT_WEIGHT_SCALE_MESG_FIELD;
|
2010
|
-
|
2011
|
-
typedef struct
|
2012
|
-
{
|
2013
|
-
FIT_UINT8 reserved_1;
|
2014
|
-
FIT_UINT8 arch;
|
2015
|
-
FIT_MESG_NUM global_mesg_num;
|
2016
|
-
FIT_UINT8 num_fields;
|
2017
|
-
FIT_UINT8 fields[FIT_WEIGHT_SCALE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
|
2018
|
-
} FIT_WEIGHT_SCALE_MESG_DEF;
|
2019
|
-
|
2020
|
-
#define FIT_WEIGHT_SCALE_MESG_DEF_SIZE 41
|
2021
|
-
|
2022
|
-
typedef enum {
|
2023
|
-
FIT_MESG_FILE_ID,
|
2024
|
-
FIT_MESG_FILE_CREATOR,
|
2025
|
-
FIT_MESG_SOFTWARE,
|
2026
|
-
FIT_MESG_CAPABILITIES,
|
2027
|
-
FIT_MESG_FILE_CAPABILITIES,
|
2028
|
-
FIT_MESG_MESG_CAPABILITIES,
|
2029
|
-
FIT_MESG_FIELD_CAPABILITIES,
|
2030
|
-
FIT_MESG_DEVICE_SETTINGS,
|
2031
|
-
FIT_MESG_USER_PROFILE,
|
2032
|
-
FIT_MESG_HRM_PROFILE,
|
2033
|
-
FIT_MESG_ZONES_TARGET,
|
2034
|
-
FIT_MESG_SPORT,
|
2035
|
-
FIT_MESG_HR_ZONE,
|
2036
|
-
FIT_MESG_SPEED_ZONE,
|
2037
|
-
FIT_MESG_POWER_ZONE,
|
2038
|
-
FIT_MESG_MET_ZONE,
|
2039
|
-
FIT_MESG_ACTIVITY,
|
2040
|
-
FIT_MESG_SESSION,
|
2041
|
-
FIT_MESG_LAP,
|
2042
|
-
FIT_MESG_RECORD,
|
2043
|
-
FIT_MESG_EVENT,
|
2044
|
-
FIT_MESG_DEVICE_INFO,
|
2045
|
-
FIT_MESG_COURSE,
|
2046
|
-
FIT_MESG_COURSE_POINT,
|
2047
|
-
FIT_MESG_WORKOUT,
|
2048
|
-
FIT_MESG_WORKOUT_STEP,
|
2049
|
-
FIT_MESG_SCHEDULE,
|
2050
|
-
FIT_MESG_TOTALS,
|
2051
|
-
FIT_MESG_WEIGHT_SCALE,
|
2052
|
-
FIT_MESGS
|
2053
|
-
} FIT_MESG;
|
2054
|
-
|
2055
|
-
|
2056
|
-
///////////////////////////////////////////////////////////////////////
|
2057
|
-
// File Structures
|
2058
|
-
// Use FIT_MESG_OFFSET macro get byte offset of messages in a file.
|
2059
|
-
///////////////////////////////////////////////////////////////////////
|
2060
|
-
|
2061
|
-
#define FIT_DEVICE_FILE_FIELD_CAPABILITIES_MESGS 2
|
2062
|
-
|
2063
|
-
typedef struct
|
2064
|
-
{
|
2065
|
-
FIT_UINT8 field_capabilities_mesg_def[FIT_HDR_SIZE + FIT_FIELD_CAPABILITIES_MESG_DEF_SIZE];
|
2066
|
-
FIT_UINT8 field_capabilities_mesg[FIT_DEVICE_FILE_FIELD_CAPABILITIES_MESGS][FIT_HDR_SIZE + FIT_FIELD_CAPABILITIES_MESG_SIZE];
|
2067
|
-
} FIT_DEVICE_FILE;
|
2068
|
-
|
2069
|
-
#define FIT_DEVICE_FILE_SIZE (0 + FIT_HDR_SIZE + FIT_FIELD_CAPABILITIES_MESG_DEF_SIZE + FIT_DEVICE_FILE_FIELD_CAPABILITIES_MESGS * (FIT_HDR_SIZE + FIT_FIELD_CAPABILITIES_MESG_SIZE))
|
2070
|
-
|
2071
|
-
|
2072
|
-
///////////////////////////////////////////////////////////////////////
|
2073
|
-
// Public Constants
|
2074
|
-
///////////////////////////////////////////////////////////////////////
|
2075
|
-
|
2076
|
-
const extern FIT_MESG_DEF *fit_mesg_defs[FIT_MESGS];
|
2077
|
-
#define FIT_FIELD_CAPABILITIES_MESGS 2
|
2078
|
-
const extern FIT_FIELD_CAPABILITIES_MESG fit_field_capabilities[FIT_FIELD_CAPABILITIES_MESGS];
|
2079
|
-
#if defined(__cplusplus)
|
2080
|
-
}
|
2081
|
-
#endif
|
2082
|
-
|
2083
|
-
#endif // !defined(FIT_SDK_H)
|