rubyfit 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,618 @@
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
+ #include "string.h"
22
+ #include "fit_product.h"
23
+
24
+
25
+ ///////////////////////////////////////////////////////////////////////
26
+ // Messages
27
+ ///////////////////////////////////////////////////////////////////////
28
+
29
+ const static FIT_FILE_ID_MESG_DEF file_id_mesg_def =
30
+ {
31
+ 0, // reserved_1
32
+ FIT_ARCH_ENDIAN, // arch
33
+ FIT_MESG_NUM_FILE_ID, // global_mesg_num
34
+ 6, // num_fields
35
+ {
36
+ // Def#, size, base_type
37
+ 3, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
38
+ 4, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
39
+ 1, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
40
+ 2, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
41
+ 5, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
42
+ 0, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
43
+ }
44
+ };
45
+
46
+ const static FIT_FILE_CREATOR_MESG_DEF file_creator_mesg_def =
47
+ {
48
+ 0, // reserved_1
49
+ FIT_ARCH_ENDIAN, // arch
50
+ FIT_MESG_NUM_FILE_CREATOR, // global_mesg_num
51
+ 2, // num_fields
52
+ {
53
+ // Def#, size, base_type
54
+ 0, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
55
+ 1, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
56
+ }
57
+ };
58
+
59
+ const static FIT_SOFTWARE_MESG_DEF software_mesg_def =
60
+ {
61
+ 0, // reserved_1
62
+ FIT_ARCH_ENDIAN, // arch
63
+ FIT_MESG_NUM_SOFTWARE, // global_mesg_num
64
+ 3, // num_fields
65
+ {
66
+ // Def#, size, base_type
67
+ 5, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
68
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
69
+ 3, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
70
+ }
71
+ };
72
+
73
+ const static FIT_CAPABILITIES_MESG_DEF capabilities_mesg_def =
74
+ {
75
+ 0, // reserved_1
76
+ FIT_ARCH_ENDIAN, // arch
77
+ FIT_MESG_NUM_CAPABILITIES, // global_mesg_num
78
+ 1, // num_fields
79
+ {
80
+ // Def#, size, base_type
81
+ 21, (sizeof(FIT_WORKOUT_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z,
82
+ }
83
+ };
84
+
85
+ const static FIT_FILE_CAPABILITIES_MESG_DEF file_capabilities_mesg_def =
86
+ {
87
+ 0, // reserved_1
88
+ FIT_ARCH_ENDIAN, // arch
89
+ FIT_MESG_NUM_FILE_CAPABILITIES, // global_mesg_num
90
+ 6, // num_fields
91
+ {
92
+ // Def#, size, base_type
93
+ 2, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
94
+ 4, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
95
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
96
+ 3, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
97
+ 0, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
98
+ 1, (sizeof(FIT_FILE_FLAGS)*1), FIT_BASE_TYPE_UINT8Z,
99
+ }
100
+ };
101
+
102
+ const static FIT_MESG_CAPABILITIES_MESG_DEF mesg_capabilities_mesg_def =
103
+ {
104
+ 0, // reserved_1
105
+ FIT_ARCH_ENDIAN, // arch
106
+ FIT_MESG_NUM_MESG_CAPABILITIES, // global_mesg_num
107
+ 5, // num_fields
108
+ {
109
+ // Def#, size, base_type
110
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
111
+ 1, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16,
112
+ 3, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
113
+ 0, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
114
+ 2, (sizeof(FIT_MESG_COUNT)*1), FIT_BASE_TYPE_ENUM,
115
+ }
116
+ };
117
+
118
+ const static FIT_FIELD_CAPABILITIES_MESG_DEF field_capabilities_mesg_def =
119
+ {
120
+ 0, // reserved_1
121
+ FIT_ARCH_ENDIAN, // arch
122
+ FIT_MESG_NUM_FIELD_CAPABILITIES, // global_mesg_num
123
+ 5, // num_fields
124
+ {
125
+ // Def#, size, base_type
126
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
127
+ 1, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16,
128
+ 3, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
129
+ 0, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
130
+ 2, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
131
+ }
132
+ };
133
+
134
+ const static FIT_DEVICE_SETTINGS_MESG_DEF device_settings_mesg_def =
135
+ {
136
+ 0, // reserved_1
137
+ FIT_ARCH_ENDIAN, // arch
138
+ FIT_MESG_NUM_DEVICE_SETTINGS, // global_mesg_num
139
+ 1, // num_fields
140
+ {
141
+ // Def#, size, base_type
142
+ 1, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
143
+ }
144
+ };
145
+
146
+ const static FIT_USER_PROFILE_MESG_DEF user_profile_mesg_def =
147
+ {
148
+ 0, // reserved_1
149
+ FIT_ARCH_ENDIAN, // arch
150
+ FIT_MESG_NUM_USER_PROFILE, // global_mesg_num
151
+ 19, // num_fields
152
+ {
153
+ // Def#, size, base_type
154
+ 0, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
155
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
156
+ 4, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
157
+ 1, (sizeof(FIT_GENDER)*1), FIT_BASE_TYPE_ENUM,
158
+ 2, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
159
+ 3, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
160
+ 5, (sizeof(FIT_LANGUAGE)*1), FIT_BASE_TYPE_ENUM,
161
+ 6, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
162
+ 7, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
163
+ 8, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
164
+ 9, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
165
+ 10, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
166
+ 11, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
167
+ 12, (sizeof(FIT_DISPLAY_HEART)*1), FIT_BASE_TYPE_ENUM,
168
+ 13, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
169
+ 14, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
170
+ 16, (sizeof(FIT_DISPLAY_POWER)*1), FIT_BASE_TYPE_ENUM,
171
+ 17, (sizeof(FIT_ACTIVITY_CLASS)*1), FIT_BASE_TYPE_ENUM,
172
+ 18, (sizeof(FIT_DISPLAY_POSITION)*1), FIT_BASE_TYPE_ENUM,
173
+ }
174
+ };
175
+
176
+ const static FIT_HRM_PROFILE_MESG_DEF hrm_profile_mesg_def =
177
+ {
178
+ 0, // reserved_1
179
+ FIT_ARCH_ENDIAN, // arch
180
+ FIT_MESG_NUM_HRM_PROFILE, // global_mesg_num
181
+ 3, // num_fields
182
+ {
183
+ // Def#, size, base_type
184
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
185
+ 1, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z,
186
+ 0, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
187
+ }
188
+ };
189
+
190
+ const static FIT_ZONES_TARGET_MESG_DEF zones_target_mesg_def =
191
+ {
192
+ 0, // reserved_1
193
+ FIT_ARCH_ENDIAN, // arch
194
+ FIT_MESG_NUM_ZONES_TARGET, // global_mesg_num
195
+ 5, // num_fields
196
+ {
197
+ // Def#, size, base_type
198
+ 3, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
199
+ 1, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
200
+ 2, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
201
+ 5, (sizeof(FIT_HR_ZONE_CALC)*1), FIT_BASE_TYPE_ENUM,
202
+ 7, (sizeof(FIT_PWR_ZONE_CALC)*1), FIT_BASE_TYPE_ENUM,
203
+ }
204
+ };
205
+
206
+ const static FIT_SPORT_MESG_DEF sport_mesg_def =
207
+ {
208
+ 0, // reserved_1
209
+ FIT_ARCH_ENDIAN, // arch
210
+ FIT_MESG_NUM_SPORT, // global_mesg_num
211
+ 3, // num_fields
212
+ {
213
+ // Def#, size, base_type
214
+ 3, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
215
+ 0, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
216
+ 1, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
217
+ }
218
+ };
219
+
220
+ const static FIT_HR_ZONE_MESG_DEF hr_zone_mesg_def =
221
+ {
222
+ 0, // reserved_1
223
+ FIT_ARCH_ENDIAN, // arch
224
+ FIT_MESG_NUM_HR_ZONE, // global_mesg_num
225
+ 3, // num_fields
226
+ {
227
+ // Def#, size, base_type
228
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
229
+ 1, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
230
+ 2, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
231
+ }
232
+ };
233
+
234
+ const static FIT_SPEED_ZONE_MESG_DEF speed_zone_mesg_def =
235
+ {
236
+ 0, // reserved_1
237
+ FIT_ARCH_ENDIAN, // arch
238
+ FIT_MESG_NUM_SPEED_ZONE, // global_mesg_num
239
+ 3, // num_fields
240
+ {
241
+ // Def#, size, base_type
242
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
243
+ 0, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
244
+ 1, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
245
+ }
246
+ };
247
+
248
+ const static FIT_POWER_ZONE_MESG_DEF power_zone_mesg_def =
249
+ {
250
+ 0, // reserved_1
251
+ FIT_ARCH_ENDIAN, // arch
252
+ FIT_MESG_NUM_POWER_ZONE, // global_mesg_num
253
+ 3, // num_fields
254
+ {
255
+ // Def#, size, base_type
256
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
257
+ 1, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
258
+ 2, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
259
+ }
260
+ };
261
+
262
+ const static FIT_MET_ZONE_MESG_DEF met_zone_mesg_def =
263
+ {
264
+ 0, // reserved_1
265
+ FIT_ARCH_ENDIAN, // arch
266
+ FIT_MESG_NUM_MET_ZONE, // global_mesg_num
267
+ 4, // num_fields
268
+ {
269
+ // Def#, size, base_type
270
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
271
+ 2, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
272
+ 1, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
273
+ 3, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
274
+ }
275
+ };
276
+
277
+ const static FIT_ACTIVITY_MESG_DEF activity_mesg_def =
278
+ {
279
+ 0, // reserved_1
280
+ FIT_ARCH_ENDIAN, // arch
281
+ FIT_MESG_NUM_ACTIVITY, // global_mesg_num
282
+ 8, // num_fields
283
+ {
284
+ // Def#, size, base_type
285
+ 253, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
286
+ 0, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
287
+ 5, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
288
+ 1, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
289
+ 2, (sizeof(FIT_ACTIVITY)*1), FIT_BASE_TYPE_ENUM,
290
+ 3, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
291
+ 4, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
292
+ 6, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
293
+ }
294
+ };
295
+
296
+ const static FIT_SESSION_MESG_DEF session_mesg_def =
297
+ {
298
+ 0, // reserved_1
299
+ FIT_ARCH_ENDIAN, // arch
300
+ FIT_MESG_NUM_SESSION, // global_mesg_num
301
+ 34, // num_fields
302
+ {
303
+ // Def#, size, base_type
304
+ 253, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
305
+ 2, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
306
+ 3, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
307
+ 4, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
308
+ 7, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
309
+ 8, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
310
+ 9, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
311
+ 10, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
312
+ 29, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
313
+ 30, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
314
+ 31, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
315
+ 32, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
316
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
317
+ 11, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
318
+ 13, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
319
+ 14, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
320
+ 15, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
321
+ 20, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
322
+ 21, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
323
+ 22, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
324
+ 23, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
325
+ 25, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
326
+ 26, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
327
+ 0, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
328
+ 1, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
329
+ 5, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
330
+ 6, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
331
+ 16, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
332
+ 17, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
333
+ 18, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
334
+ 19, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
335
+ 24, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
336
+ 27, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
337
+ 28, (sizeof(FIT_SESSION_TRIGGER)*1), FIT_BASE_TYPE_ENUM,
338
+ }
339
+ };
340
+
341
+ const static FIT_LAP_MESG_DEF lap_mesg_def =
342
+ {
343
+ 0, // reserved_1
344
+ FIT_ARCH_ENDIAN, // arch
345
+ FIT_MESG_NUM_LAP, // global_mesg_num
346
+ 33, // num_fields
347
+ {
348
+ // Def#, size, base_type
349
+ 253, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
350
+ 2, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
351
+ 3, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
352
+ 4, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
353
+ 5, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
354
+ 6, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
355
+ 7, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
356
+ 8, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
357
+ 9, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
358
+ 10, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
359
+ 27, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
360
+ 28, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
361
+ 29, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
362
+ 30, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
363
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
364
+ 11, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
365
+ 12, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
366
+ 13, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
367
+ 14, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
368
+ 19, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
369
+ 20, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
370
+ 21, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
371
+ 22, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
372
+ 0, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
373
+ 1, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
374
+ 15, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
375
+ 16, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
376
+ 17, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
377
+ 18, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
378
+ 23, (sizeof(FIT_INTENSITY)*1), FIT_BASE_TYPE_ENUM,
379
+ 24, (sizeof(FIT_LAP_TRIGGER)*1), FIT_BASE_TYPE_ENUM,
380
+ 25, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
381
+ 26, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
382
+ }
383
+ };
384
+
385
+ const static FIT_RECORD_MESG_DEF record_mesg_def =
386
+ {
387
+ 0, // reserved_1
388
+ FIT_ARCH_ENDIAN, // arch
389
+ FIT_MESG_NUM_RECORD, // global_mesg_num
390
+ 15, // num_fields
391
+ {
392
+ // Def#, size, base_type
393
+ 253, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
394
+ 0, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
395
+ 1, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
396
+ 5, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
397
+ 11, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
398
+ 8, (sizeof(FIT_BYTE)*3), FIT_BASE_TYPE_BYTE,
399
+ 3, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
400
+ 2, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
401
+ 6, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
402
+ 7, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
403
+ 9, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
404
+ 4, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
405
+ 10, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
406
+ 12, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
407
+ 13, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
408
+ }
409
+ };
410
+
411
+ const static FIT_EVENT_MESG_DEF event_mesg_def =
412
+ {
413
+ 0, // reserved_1
414
+ FIT_ARCH_ENDIAN, // arch
415
+ FIT_MESG_NUM_EVENT, // global_mesg_num
416
+ 6, // num_fields
417
+ {
418
+ // Def#, size, base_type
419
+ 253, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
420
+ 3, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
421
+ 2, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
422
+ 0, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
423
+ 1, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
424
+ 4, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
425
+ }
426
+ };
427
+
428
+ const static FIT_DEVICE_INFO_MESG_DEF device_info_mesg_def =
429
+ {
430
+ 0, // reserved_1
431
+ FIT_ARCH_ENDIAN, // arch
432
+ FIT_MESG_NUM_DEVICE_INFO, // global_mesg_num
433
+ 10, // num_fields
434
+ {
435
+ // Def#, size, base_type
436
+ 253, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
437
+ 3, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
438
+ 2, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
439
+ 4, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
440
+ 5, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
441
+ 10, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
442
+ 0, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8,
443
+ 1, (sizeof(FIT_DEVICE_TYPE)*1), FIT_BASE_TYPE_UINT8,
444
+ 6, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
445
+ 11, (sizeof(FIT_BATTERY_STATUS)*1), FIT_BASE_TYPE_UINT8,
446
+ }
447
+ };
448
+
449
+ const static FIT_COURSE_MESG_DEF course_mesg_def =
450
+ {
451
+ 0, // reserved_1
452
+ FIT_ARCH_ENDIAN, // arch
453
+ FIT_MESG_NUM_COURSE, // global_mesg_num
454
+ 3, // num_fields
455
+ {
456
+ // Def#, size, base_type
457
+ 5, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
458
+ 6, (sizeof(FIT_COURSE_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z,
459
+ 4, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
460
+ }
461
+ };
462
+
463
+ const static FIT_COURSE_POINT_MESG_DEF course_point_mesg_def =
464
+ {
465
+ 0, // reserved_1
466
+ FIT_ARCH_ENDIAN, // arch
467
+ FIT_MESG_NUM_COURSE_POINT, // global_mesg_num
468
+ 7, // num_fields
469
+ {
470
+ // Def#, size, base_type
471
+ 1, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
472
+ 2, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
473
+ 3, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
474
+ 4, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
475
+ 6, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
476
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
477
+ 5, (sizeof(FIT_COURSE_POINT)*1), FIT_BASE_TYPE_ENUM,
478
+ }
479
+ };
480
+
481
+ const static FIT_WORKOUT_MESG_DEF workout_mesg_def =
482
+ {
483
+ 0, // reserved_1
484
+ FIT_ARCH_ENDIAN, // arch
485
+ FIT_MESG_NUM_WORKOUT, // global_mesg_num
486
+ 5, // num_fields
487
+ {
488
+ // Def#, size, base_type
489
+ 5, (sizeof(FIT_WORKOUT_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z,
490
+ 8, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
491
+ 6, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
492
+ 7, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
493
+ 4, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
494
+ }
495
+ };
496
+
497
+ const static FIT_WORKOUT_STEP_MESG_DEF workout_step_mesg_def =
498
+ {
499
+ 0, // reserved_1
500
+ FIT_ARCH_ENDIAN, // arch
501
+ FIT_MESG_NUM_WORKOUT_STEP, // global_mesg_num
502
+ 9, // num_fields
503
+ {
504
+ // Def#, size, base_type
505
+ 0, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
506
+ 2, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
507
+ 4, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
508
+ 5, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
509
+ 6, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
510
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
511
+ 1, (sizeof(FIT_WKT_STEP_DURATION)*1), FIT_BASE_TYPE_ENUM,
512
+ 3, (sizeof(FIT_WKT_STEP_TARGET)*1), FIT_BASE_TYPE_ENUM,
513
+ 7, (sizeof(FIT_INTENSITY)*1), FIT_BASE_TYPE_ENUM,
514
+ }
515
+ };
516
+
517
+ const static FIT_SCHEDULE_MESG_DEF schedule_mesg_def =
518
+ {
519
+ 0, // reserved_1
520
+ FIT_ARCH_ENDIAN, // arch
521
+ FIT_MESG_NUM_SCHEDULE, // global_mesg_num
522
+ 7, // num_fields
523
+ {
524
+ // Def#, size, base_type
525
+ 2, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
526
+ 3, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
527
+ 6, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
528
+ 0, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
529
+ 1, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
530
+ 4, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
531
+ 5, (sizeof(FIT_SCHEDULE)*1), FIT_BASE_TYPE_ENUM,
532
+ }
533
+ };
534
+
535
+ const static FIT_TOTALS_MESG_DEF totals_mesg_def =
536
+ {
537
+ 0, // reserved_1
538
+ FIT_ARCH_ENDIAN, // arch
539
+ FIT_MESG_NUM_TOTALS, // global_mesg_num
540
+ 6, // num_fields
541
+ {
542
+ // Def#, size, base_type
543
+ 253, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
544
+ 0, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
545
+ 1, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
546
+ 2, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
547
+ 254, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
548
+ 3, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
549
+ }
550
+ };
551
+
552
+ const static FIT_WEIGHT_SCALE_MESG_DEF weight_scale_mesg_def =
553
+ {
554
+ 0, // reserved_1
555
+ FIT_ARCH_ENDIAN, // arch
556
+ FIT_MESG_NUM_WEIGHT_SCALE, // global_mesg_num
557
+ 12, // num_fields
558
+ {
559
+ // Def#, size, base_type
560
+ 253, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
561
+ 0, (sizeof(FIT_WEIGHT)*1), FIT_BASE_TYPE_UINT16,
562
+ 1, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
563
+ 2, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
564
+ 3, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
565
+ 4, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
566
+ 5, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
567
+ 7, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
568
+ 9, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
569
+ 8, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
570
+ 10, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
571
+ 11, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
572
+ }
573
+ };
574
+
575
+
576
+ ///////////////////////////////////////////////////////////////////////
577
+ // Public Constants
578
+ ///////////////////////////////////////////////////////////////////////
579
+
580
+ const FIT_MESG_DEF *fit_mesg_defs[FIT_MESGS] =
581
+ {
582
+ (FIT_MESG_DEF *)&file_id_mesg_def,
583
+ (FIT_MESG_DEF *)&file_creator_mesg_def,
584
+ (FIT_MESG_DEF *)&software_mesg_def,
585
+ (FIT_MESG_DEF *)&capabilities_mesg_def,
586
+ (FIT_MESG_DEF *)&file_capabilities_mesg_def,
587
+ (FIT_MESG_DEF *)&mesg_capabilities_mesg_def,
588
+ (FIT_MESG_DEF *)&field_capabilities_mesg_def,
589
+ (FIT_MESG_DEF *)&device_settings_mesg_def,
590
+ (FIT_MESG_DEF *)&user_profile_mesg_def,
591
+ (FIT_MESG_DEF *)&hrm_profile_mesg_def,
592
+ (FIT_MESG_DEF *)&zones_target_mesg_def,
593
+ (FIT_MESG_DEF *)&sport_mesg_def,
594
+ (FIT_MESG_DEF *)&hr_zone_mesg_def,
595
+ (FIT_MESG_DEF *)&speed_zone_mesg_def,
596
+ (FIT_MESG_DEF *)&power_zone_mesg_def,
597
+ (FIT_MESG_DEF *)&met_zone_mesg_def,
598
+ (FIT_MESG_DEF *)&activity_mesg_def,
599
+ (FIT_MESG_DEF *)&session_mesg_def,
600
+ (FIT_MESG_DEF *)&lap_mesg_def,
601
+ (FIT_MESG_DEF *)&record_mesg_def,
602
+ (FIT_MESG_DEF *)&event_mesg_def,
603
+ (FIT_MESG_DEF *)&device_info_mesg_def,
604
+ (FIT_MESG_DEF *)&course_mesg_def,
605
+ (FIT_MESG_DEF *)&course_point_mesg_def,
606
+ (FIT_MESG_DEF *)&workout_mesg_def,
607
+ (FIT_MESG_DEF *)&workout_step_mesg_def,
608
+ (FIT_MESG_DEF *)&schedule_mesg_def,
609
+ (FIT_MESG_DEF *)&totals_mesg_def,
610
+ (FIT_MESG_DEF *)&weight_scale_mesg_def,
611
+ };
612
+
613
+ const FIT_FIELD_CAPABILITIES_MESG fit_field_capabilities[FIT_FIELD_CAPABILITIES_MESGS] =
614
+ {
615
+ { FIT_MESG_NUM_RECORD, 1, FIT_FILE_ACTIVITY, FIT_RECORD_FIELD_NUM_POSITION_LAT },
616
+ { FIT_MESG_NUM_RECORD, 1, FIT_FILE_ACTIVITY, FIT_RECORD_FIELD_NUM_POSITION_LONG },
617
+ };
618
+