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.
@@ -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)