rubyfit 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)