rubyfit 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,11 +7,11 @@
7
7
  // warranties of merchantability, non-infringement, or fitness for a particular
8
8
  // purpose, are specifically disclaimed.
9
9
  //
10
- // Copyright 2014 Dynastream Innovations Inc.
10
+ // Copyright 2016 Dynastream Innovations Inc.
11
11
  ////////////////////////////////////////////////////////////////////////////////
12
12
  // ****WARNING**** This file is auto-generated! Do NOT edit this file.
13
- // Profile Version = 11.0Release
14
- // Tag = $Name: AKW11_000 $
13
+ // Profile Version = 20.16Release
14
+ // Tag = production/akw/20.16.00-0-gce20b51
15
15
  // Product = EXAMPLE
16
16
  // Alignment = 4 bytes, padding disabled.
17
17
  ////////////////////////////////////////////////////////////////////////////////
@@ -34,7 +34,8 @@ typedef enum
34
34
  FIT_CONVERT_ERROR,
35
35
  FIT_CONVERT_END_OF_FILE,
36
36
  FIT_CONVERT_PROTOCOL_VERSION_NOT_SUPPORTED,
37
- FIT_CONVERT_DATA_TYPE_NOT_SUPPORTED
37
+ FIT_CONVERT_DATA_TYPE_NOT_SUPPORTED,
38
+ FIT_CONVERT_MESSAGE_NUMBER_FOUND
38
39
  } FIT_CONVERT_RETURN;
39
40
 
40
41
  typedef enum
@@ -49,7 +50,12 @@ typedef enum
49
50
  FIT_CONVERT_DECODE_FIELD_DEF,
50
51
  FIT_CONVERT_DECODE_FIELD_DEF_SIZE,
51
52
  FIT_CONVERT_DECODE_FIELD_BASE_TYPE,
52
- FIT_CONVERT_DECODE_FIELD_DATA
53
+ FIT_CONVERT_DECODE_NUM_DEV_FIELDS,
54
+ FIT_CONVERT_DECODE_DEV_FIELD_DEF,
55
+ FIT_CONVERT_DECODE_DEV_FIELD_SIZE,
56
+ FIT_CONVERT_DECODE_DEV_FIELD_INDEX,
57
+ FIT_CONVERT_DECODE_FIELD_DATA,
58
+ FIT_CONVERT_DECODE_DEV_FIELD_DATA
53
59
  } FIT_CONVERT_DECODE_STATE;
54
60
 
55
61
  typedef struct
@@ -70,8 +76,10 @@ typedef struct
70
76
  FIT_UINT16 crc;
71
77
  #endif
72
78
  FIT_CONVERT_DECODE_STATE decode_state;
79
+ FIT_BOOL has_dev_data;
73
80
  FIT_UINT8 mesg_index;
74
81
  FIT_UINT8 mesg_sizes[FIT_MAX_LOCAL_MESGS];
82
+ FIT_UINT8 dev_data_sizes[FIT_MAX_LOCAL_MESGS];
75
83
  FIT_UINT8 mesg_offset;
76
84
  FIT_UINT8 num_fields;
77
85
  FIT_UINT8 field_num;
@@ -122,6 +130,42 @@ typedef struct
122
130
  FIT_CONVERT_RETURN FitConvert_Read(const void *data, FIT_UINT32 size);
123
131
  #endif
124
132
 
133
+ ///////////////////////////////////////////////////////////////////////
134
+ // Convert a stream of bytes.
135
+ // Parameters:
136
+ // state Pointer to converter state.
137
+ // data Pointer to a buffer containing bytes from the file stream.
138
+ // size Number of bytes in the data buffer.
139
+ // return_message_numbers Returns when a message number has been found in a message definition
140
+ // This is useful when needing to force fit_convert to use an alternate message definition
141
+ //
142
+ // Returns FIT_CONVERT_CONTINUE when the all bytes in data have
143
+ // been decoded successfully and ready to accept next bytes in the
144
+ // file stream. No message is available yet.
145
+ // Returns FIT_CONVERT_MESSAGE_AVAILABLE when a message is
146
+ // complete. The message is valid until this function is called
147
+ // again.
148
+ // Returns FIT_CONVERT_MESSAGE_NUMBER_FOUND when a new message number
149
+ // has been found in a message definition.
150
+ // Returns FIT_CONVERT_ERROR if a decoding error occurs.
151
+ // Returns FIT_CONVERT_END_OF_FILE when the file has been decoded successfully.
152
+ ///////////////////////////////////////////////////////////////////////
153
+ #if defined(FIT_CONVERT_MULTI_THREAD)
154
+ FIT_CONVERT_RETURN FitConvert_ReadExt(FIT_CONVERT_STATE *state, const void *data, FIT_UINT32 size, FIT_BOOL return_message_numbers);
155
+ #else
156
+ FIT_CONVERT_RETURN FitConvert_ReadExt(const void *data, FIT_UINT32 size, FIT_BOOL return_message_numbers);
157
+ #endif
158
+
159
+ ///////////////////////////////////////////////////////////////////////
160
+ // Overrides the message definition to be used when
161
+ // decoding the message.
162
+ // In a multithreaded environment, you can set the state directly
163
+ // in FitConvert_ReadExt().
164
+ ///////////////////////////////////////////////////////////////////////
165
+ #if !defined(FIT_CONVERT_MULTI_THREAD)
166
+ void FitConvert_SetMessageDefinition(FIT_MESG_DEF *mesg_def);
167
+ #endif
168
+
125
169
  ///////////////////////////////////////////////////////////////////////
126
170
  // Returns the global message number of the decoded message.
127
171
  ///////////////////////////////////////////////////////////////////////
@@ -7,11 +7,11 @@
7
7
  // warranties of merchantability, non-infringement, or fitness for a particular
8
8
  // purpose, are specifically disclaimed.
9
9
  //
10
- // Copyright 2014 Dynastream Innovations Inc.
10
+ // Copyright 2016 Dynastream Innovations Inc.
11
11
  ////////////////////////////////////////////////////////////////////////////////
12
12
  // ****WARNING**** This file is auto-generated! Do NOT edit this file.
13
- // Profile Version = 11.0Release
14
- // Tag = $Name: AKW11_000 $
13
+ // Profile Version = 20.16Release
14
+ // Tag = production/akw/20.16.00-0-gce20b51
15
15
  // Product = EXAMPLE
16
16
  // Alignment = 4 bytes, padding disabled.
17
17
  ////////////////////////////////////////////////////////////////////////////////
@@ -46,7 +46,7 @@ FIT_UINT16 FitCRC_Get16(FIT_UINT16 crc, FIT_UINT8 byte)
46
46
  return crc;
47
47
  }
48
48
 
49
- FIT_UINT16 FitCRC_Update16(FIT_UINT16 crc, const volatile void *data, FIT_UINT8 size)
49
+ FIT_UINT16 FitCRC_Update16(FIT_UINT16 crc, const volatile void *data, FIT_UINT32 size)
50
50
  {
51
51
  FIT_BYTE *data_ptr = (FIT_BYTE *)data;
52
52
 
@@ -60,7 +60,7 @@ FIT_UINT16 FitCRC_Update16(FIT_UINT16 crc, const volatile void *data, FIT_UINT8
60
60
  return crc;
61
61
  }
62
62
 
63
- FIT_UINT16 FitCRC_Calc16(const volatile void *data, FIT_UINT8 size)
63
+ FIT_UINT16 FitCRC_Calc16(const volatile void *data, FIT_UINT32 size)
64
64
  {
65
65
  return FitCRC_Update16(0, data, size);
66
66
  }
@@ -7,11 +7,11 @@
7
7
  // warranties of merchantability, non-infringement, or fitness for a particular
8
8
  // purpose, are specifically disclaimed.
9
9
  //
10
- // Copyright 2014 Dynastream Innovations Inc.
10
+ // Copyright 2016 Dynastream Innovations Inc.
11
11
  ////////////////////////////////////////////////////////////////////////////////
12
12
  // ****WARNING**** This file is auto-generated! Do NOT edit this file.
13
- // Profile Version = 11.0Release
14
- // Tag = $Name: AKW11_000 $
13
+ // Profile Version = 20.16Release
14
+ // Tag = production/akw/20.16.00-0-gce20b51
15
15
  // Product = EXAMPLE
16
16
  // Alignment = 4 bytes, padding disabled.
17
17
  ////////////////////////////////////////////////////////////////////////////////
@@ -32,8 +32,8 @@
32
32
  #endif
33
33
 
34
34
  FIT_UINT16 FitCRC_Get16(FIT_UINT16 crc, FIT_UINT8 byte);
35
- FIT_UINT16 FitCRC_Update16(FIT_UINT16 crc, const volatile void *data, FIT_UINT8 size);
36
- FIT_UINT16 FitCRC_Calc16(const volatile void *data, FIT_UINT8 size);
35
+ FIT_UINT16 FitCRC_Update16(FIT_UINT16 crc, const volatile void *data, FIT_UINT32 size);
36
+ FIT_UINT16 FitCRC_Calc16(const volatile void *data, FIT_UINT32 size);
37
37
 
38
38
  #if defined(__cplusplus)
39
39
  }
@@ -7,11 +7,11 @@
7
7
  // warranties of merchantability, non-infringement, or fitness for a particular
8
8
  // purpose, are specifically disclaimed.
9
9
  //
10
- // Copyright 2014 Dynastream Innovations Inc.
10
+ // Copyright 2016 Dynastream Innovations Inc.
11
11
  ////////////////////////////////////////////////////////////////////////////////
12
12
  // ****WARNING**** This file is auto-generated! Do NOT edit this file.
13
- // Profile Version = 11.0Release
14
- // Tag = $Name: AKW11_000 $
13
+ // Profile Version = 20.16Release
14
+ // Tag = production/akw/20.16.00-0-gce20b51
15
15
  // Product = EXAMPLE
16
16
  // Alignment = 4 bytes, padding disabled.
17
17
  ////////////////////////////////////////////////////////////////////////////////
@@ -40,10 +40,11 @@ const static FIT_FILE_ID_MESG_DEF file_id_mesg_def =
40
40
  0, // reserved_1
41
41
  FIT_ARCH_ENDIAN, // arch
42
42
  FIT_MESG_NUM_FILE_ID, // global_mesg_num
43
- 6, // num_fields
43
+ 7, // num_fields
44
44
  { // field_def_num, size, base_type
45
45
  FIT_FILE_ID_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
46
46
  FIT_FILE_ID_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
47
+ FIT_FILE_ID_FIELD_NUM_PRODUCT_NAME, (sizeof(FIT_STRING)*20), FIT_BASE_TYPE_STRING,
47
48
  FIT_FILE_ID_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
48
49
  FIT_FILE_ID_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
49
50
  FIT_FILE_ID_FIELD_NUM_NUMBER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
@@ -153,9 +154,24 @@ const static FIT_DEVICE_SETTINGS_MESG_DEF device_settings_mesg_def =
153
154
  0, // reserved_1
154
155
  FIT_ARCH_ENDIAN, // arch
155
156
  FIT_MESG_NUM_DEVICE_SETTINGS, // global_mesg_num
156
- 1, // num_fields
157
+ 16, // num_fields
157
158
  { // field_def_num, size, base_type
158
159
  FIT_DEVICE_SETTINGS_FIELD_NUM_UTC_OFFSET, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
160
+ FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_OFFSET, (sizeof(FIT_UINT32)*2), FIT_BASE_TYPE_UINT32,
161
+ FIT_DEVICE_SETTINGS_FIELD_NUM_CLOCK_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
162
+ FIT_DEVICE_SETTINGS_FIELD_NUM_PAGES_ENABLED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
163
+ FIT_DEVICE_SETTINGS_FIELD_NUM_DEFAULT_PAGE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
164
+ FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_STEPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
165
+ FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
166
+ FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVE_TIME_ZONE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
167
+ FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_MODE, (sizeof(FIT_TIME_MODE)*2), FIT_BASE_TYPE_ENUM,
168
+ FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_ZONE_OFFSET, (sizeof(FIT_SINT8)*2), FIT_BASE_TYPE_SINT8,
169
+ FIT_DEVICE_SETTINGS_FIELD_NUM_BACKLIGHT_MODE, (sizeof(FIT_BACKLIGHT_MODE)*1), FIT_BASE_TYPE_ENUM,
170
+ FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVITY_TRACKER_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
171
+ FIT_DEVICE_SETTINGS_FIELD_NUM_MOVE_ALERT_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
172
+ FIT_DEVICE_SETTINGS_FIELD_NUM_DATE_MODE, (sizeof(FIT_DATE_MODE)*1), FIT_BASE_TYPE_ENUM,
173
+ FIT_DEVICE_SETTINGS_FIELD_NUM_DISPLAY_ORIENTATION, (sizeof(FIT_DISPLAY_ORIENTATION)*1), FIT_BASE_TYPE_ENUM,
174
+ FIT_DEVICE_SETTINGS_FIELD_NUM_MOUNTING_SIDE, (sizeof(FIT_SIDE)*1), FIT_BASE_TYPE_ENUM,
159
175
  }
160
176
  };
161
177
 
@@ -164,12 +180,14 @@ const static FIT_USER_PROFILE_MESG_DEF user_profile_mesg_def =
164
180
  0, // reserved_1
165
181
  FIT_ARCH_ENDIAN, // arch
166
182
  FIT_MESG_NUM_USER_PROFILE, // global_mesg_num
167
- 23, // num_fields
183
+ 25, // num_fields
168
184
  { // field_def_num, size, base_type
169
185
  FIT_USER_PROFILE_FIELD_NUM_FRIENDLY_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
170
186
  FIT_USER_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
171
187
  FIT_USER_PROFILE_FIELD_NUM_WEIGHT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
172
188
  FIT_USER_PROFILE_FIELD_NUM_LOCAL_ID, (sizeof(FIT_USER_LOCAL_ID)*1), FIT_BASE_TYPE_UINT16,
189
+ FIT_USER_PROFILE_FIELD_NUM_USER_RUNNING_STEP_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
190
+ FIT_USER_PROFILE_FIELD_NUM_USER_WALKING_STEP_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
173
191
  FIT_USER_PROFILE_FIELD_NUM_GENDER, (sizeof(FIT_GENDER)*1), FIT_BASE_TYPE_ENUM,
174
192
  FIT_USER_PROFILE_FIELD_NUM_AGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
175
193
  FIT_USER_PROFILE_FIELD_NUM_HEIGHT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
@@ -230,7 +248,7 @@ const static FIT_BIKE_PROFILE_MESG_DEF bike_profile_mesg_def =
230
248
  0, // reserved_1
231
249
  FIT_ARCH_ENDIAN, // arch
232
250
  FIT_MESG_NUM_BIKE_PROFILE, // global_mesg_num
233
- 31, // num_fields
251
+ 32, // num_fields
234
252
  { // field_def_num, size, base_type
235
253
  FIT_BIKE_PROFILE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
236
254
  FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
@@ -263,6 +281,30 @@ const static FIT_BIKE_PROFILE_MESG_DEF bike_profile_mesg_def =
263
281
  FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
264
282
  FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
265
283
  FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
284
+ FIT_BIKE_PROFILE_FIELD_NUM_SHIMANO_DI2_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
285
+ }
286
+ };
287
+
288
+ const static FIT_CONNECTIVITY_MESG_DEF connectivity_mesg_def =
289
+ {
290
+ 0, // reserved_1
291
+ FIT_ARCH_ENDIAN, // arch
292
+ FIT_MESG_NUM_CONNECTIVITY, // global_mesg_num
293
+ 13, // num_fields
294
+ { // field_def_num, size, base_type
295
+ FIT_CONNECTIVITY_FIELD_NUM_NAME, (sizeof(FIT_STRING)*24), FIT_BASE_TYPE_STRING,
296
+ FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
297
+ FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_LE_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
298
+ FIT_CONNECTIVITY_FIELD_NUM_ANT_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
299
+ FIT_CONNECTIVITY_FIELD_NUM_LIVE_TRACKING_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
300
+ FIT_CONNECTIVITY_FIELD_NUM_WEATHER_CONDITIONS_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
301
+ FIT_CONNECTIVITY_FIELD_NUM_WEATHER_ALERTS_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
302
+ FIT_CONNECTIVITY_FIELD_NUM_AUTO_ACTIVITY_UPLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
303
+ FIT_CONNECTIVITY_FIELD_NUM_COURSE_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
304
+ FIT_CONNECTIVITY_FIELD_NUM_WORKOUT_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
305
+ FIT_CONNECTIVITY_FIELD_NUM_GPS_EPHEMERIS_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
306
+ FIT_CONNECTIVITY_FIELD_NUM_INCIDENT_DETECTION_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
307
+ FIT_CONNECTIVITY_FIELD_NUM_GROUPTRACK_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
266
308
  }
267
309
  };
268
310
 
@@ -365,7 +407,7 @@ const static FIT_GOAL_MESG_DEF goal_mesg_def =
365
407
  0, // reserved_1
366
408
  FIT_ARCH_ENDIAN, // arch
367
409
  FIT_MESG_NUM_GOAL, // global_mesg_num
368
- 12, // num_fields
410
+ 13, // num_fields
369
411
  { // field_def_num, size, base_type
370
412
  FIT_GOAL_FIELD_NUM_START_DATE, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
371
413
  FIT_GOAL_FIELD_NUM_END_DATE, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
@@ -379,6 +421,7 @@ const static FIT_GOAL_MESG_DEF goal_mesg_def =
379
421
  FIT_GOAL_FIELD_NUM_REPEAT, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
380
422
  FIT_GOAL_FIELD_NUM_RECURRENCE, (sizeof(FIT_GOAL_RECURRENCE)*1), FIT_BASE_TYPE_ENUM,
381
423
  FIT_GOAL_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
424
+ FIT_GOAL_FIELD_NUM_SOURCE, (sizeof(FIT_GOAL_SOURCE)*1), FIT_BASE_TYPE_ENUM,
382
425
  }
383
426
  };
384
427
 
@@ -405,7 +448,7 @@ const static FIT_SESSION_MESG_DEF session_mesg_def =
405
448
  0, // reserved_1
406
449
  FIT_ARCH_ENDIAN, // arch
407
450
  FIT_MESG_NUM_SESSION, // global_mesg_num
408
- 81, // num_fields
451
+ 89, // num_fields
409
452
  { // field_def_num, size, base_type
410
453
  FIT_SESSION_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
411
454
  FIT_SESSION_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
@@ -427,6 +470,11 @@ const static FIT_SESSION_MESG_DEF session_mesg_def =
427
470
  FIT_SESSION_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
428
471
  FIT_SESSION_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
429
472
  FIT_SESSION_FIELD_NUM_AVG_LAP_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
473
+ FIT_SESSION_FIELD_NUM_ENHANCED_AVG_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
474
+ FIT_SESSION_FIELD_NUM_ENHANCED_MAX_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
475
+ FIT_SESSION_FIELD_NUM_ENHANCED_AVG_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
476
+ FIT_SESSION_FIELD_NUM_ENHANCED_MIN_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
477
+ FIT_SESSION_FIELD_NUM_ENHANCED_MAX_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
430
478
  FIT_SESSION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
431
479
  FIT_SESSION_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
432
480
  FIT_SESSION_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
@@ -444,6 +492,7 @@ const static FIT_SESSION_MESG_DEF session_mesg_def =
444
492
  FIT_SESSION_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16,
445
493
  FIT_SESSION_FIELD_NUM_AVG_STROKE_DISTANCE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
446
494
  FIT_SESSION_FIELD_NUM_POOL_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
495
+ FIT_SESSION_FIELD_NUM_THRESHOLD_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
447
496
  FIT_SESSION_FIELD_NUM_NUM_ACTIVE_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
448
497
  FIT_SESSION_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
449
498
  FIT_SESSION_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
@@ -488,6 +537,8 @@ const static FIT_SESSION_MESG_DEF session_mesg_def =
488
537
  FIT_SESSION_FIELD_NUM_AVG_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
489
538
  FIT_SESSION_FIELD_NUM_MAX_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
490
539
  FIT_SESSION_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
540
+ FIT_SESSION_FIELD_NUM_SPORT_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
541
+ FIT_SESSION_FIELD_NUM_TOTAL_ANAEROBIC_TRAINING_EFFECT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
491
542
  }
492
543
  };
493
544
 
@@ -496,7 +547,7 @@ const static FIT_LAP_MESG_DEF lap_mesg_def =
496
547
  0, // reserved_1
497
548
  FIT_ARCH_ENDIAN, // arch
498
549
  FIT_MESG_NUM_LAP, // global_mesg_num
499
- 77, // num_fields
550
+ 82, // num_fields
500
551
  { // field_def_num, size, base_type
501
552
  FIT_LAP_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
502
553
  FIT_LAP_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
@@ -514,6 +565,11 @@ const static FIT_LAP_MESG_DEF lap_mesg_def =
514
565
  FIT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
515
566
  FIT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
516
567
  FIT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
568
+ FIT_LAP_FIELD_NUM_ENHANCED_AVG_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
569
+ FIT_LAP_FIELD_NUM_ENHANCED_MAX_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
570
+ FIT_LAP_FIELD_NUM_ENHANCED_AVG_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
571
+ FIT_LAP_FIELD_NUM_ENHANCED_MIN_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
572
+ FIT_LAP_FIELD_NUM_ENHANCED_MAX_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
517
573
  FIT_LAP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
518
574
  FIT_LAP_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
519
575
  FIT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
@@ -611,7 +667,7 @@ const static FIT_RECORD_MESG_DEF record_mesg_def =
611
667
  0, // reserved_1
612
668
  FIT_ARCH_ENDIAN, // arch
613
669
  FIT_MESG_NUM_RECORD, // global_mesg_num
614
- 45, // num_fields
670
+ 48, // num_fields
615
671
  { // field_def_num, size, base_type
616
672
  FIT_RECORD_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
617
673
  FIT_RECORD_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
@@ -620,6 +676,8 @@ const static FIT_RECORD_MESG_DEF record_mesg_def =
620
676
  FIT_RECORD_FIELD_NUM_TIME_FROM_COURSE, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
621
677
  FIT_RECORD_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
622
678
  FIT_RECORD_FIELD_NUM_ACCUMULATED_POWER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
679
+ FIT_RECORD_FIELD_NUM_ENHANCED_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
680
+ FIT_RECORD_FIELD_NUM_ENHANCED_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
623
681
  FIT_RECORD_FIELD_NUM_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
624
682
  FIT_RECORD_FIELD_NUM_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
625
683
  FIT_RECORD_FIELD_NUM_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
@@ -657,6 +715,7 @@ const static FIT_RECORD_MESG_DEF record_mesg_def =
657
715
  FIT_RECORD_FIELD_NUM_TIME128, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
658
716
  FIT_RECORD_FIELD_NUM_STROKE_TYPE, (sizeof(FIT_STROKE_TYPE)*1), FIT_BASE_TYPE_ENUM,
659
717
  FIT_RECORD_FIELD_NUM_ZONE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
718
+ FIT_RECORD_FIELD_NUM_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
660
719
  FIT_RECORD_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8,
661
720
  }
662
721
  };
@@ -688,11 +747,12 @@ const static FIT_DEVICE_INFO_MESG_DEF device_info_mesg_def =
688
747
  0, // reserved_1
689
748
  FIT_ARCH_ENDIAN, // arch
690
749
  FIT_MESG_NUM_DEVICE_INFO, // global_mesg_num
691
- 17, // num_fields
750
+ 18, // num_fields
692
751
  { // field_def_num, size, base_type
693
752
  FIT_DEVICE_INFO_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
694
753
  FIT_DEVICE_INFO_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
695
754
  FIT_DEVICE_INFO_FIELD_NUM_CUM_OPERATING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
755
+ FIT_DEVICE_INFO_FIELD_NUM_PRODUCT_NAME, (sizeof(FIT_STRING)*20), FIT_BASE_TYPE_STRING,
696
756
  FIT_DEVICE_INFO_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
697
757
  FIT_DEVICE_INFO_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
698
758
  FIT_DEVICE_INFO_FIELD_NUM_SOFTWARE_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
@@ -710,6 +770,22 @@ const static FIT_DEVICE_INFO_MESG_DEF device_info_mesg_def =
710
770
  }
711
771
  };
712
772
 
773
+ const static FIT_TRAINING_FILE_MESG_DEF training_file_mesg_def =
774
+ {
775
+ 0, // reserved_1
776
+ FIT_ARCH_ENDIAN, // arch
777
+ FIT_MESG_NUM_TRAINING_FILE, // global_mesg_num
778
+ 6, // num_fields
779
+ { // field_def_num, size, base_type
780
+ FIT_TRAINING_FILE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
781
+ FIT_TRAINING_FILE_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
782
+ FIT_TRAINING_FILE_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
783
+ FIT_TRAINING_FILE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
784
+ FIT_TRAINING_FILE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
785
+ FIT_TRAINING_FILE_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
786
+ }
787
+ };
788
+
713
789
  const static FIT_HRV_MESG_DEF hrv_mesg_def =
714
790
  {
715
791
  0, // reserved_1
@@ -721,16 +797,120 @@ const static FIT_HRV_MESG_DEF hrv_mesg_def =
721
797
  }
722
798
  };
723
799
 
800
+ const static FIT_WEATHER_CONDITIONS_MESG_DEF weather_conditions_mesg_def =
801
+ {
802
+ 0, // reserved_1
803
+ FIT_ARCH_ENDIAN, // arch
804
+ FIT_MESG_NUM_WEATHER_CONDITIONS, // global_mesg_num
805
+ 16, // num_fields
806
+ { // field_def_num, size, base_type
807
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
808
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_LOCATION, (sizeof(FIT_STRING)*64), FIT_BASE_TYPE_STRING,
809
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_AT_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
810
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
811
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
812
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_DIRECTION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
813
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
814
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_WEATHER_REPORT, (sizeof(FIT_WEATHER_REPORT)*1), FIT_BASE_TYPE_ENUM,
815
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
816
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_CONDITION, (sizeof(FIT_WEATHER_STATUS)*1), FIT_BASE_TYPE_ENUM,
817
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_PRECIPITATION_PROBABILITY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
818
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE_FEELS_LIKE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
819
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_RELATIVE_HUMIDITY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
820
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_DAY_OF_WEEK, (sizeof(FIT_DAY_OF_WEEK)*1), FIT_BASE_TYPE_ENUM,
821
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_HIGH_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
822
+ FIT_WEATHER_CONDITIONS_FIELD_NUM_LOW_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
823
+ }
824
+ };
825
+
826
+ const static FIT_WEATHER_ALERT_MESG_DEF weather_alert_mesg_def =
827
+ {
828
+ 0, // reserved_1
829
+ FIT_ARCH_ENDIAN, // arch
830
+ FIT_MESG_NUM_WEATHER_ALERT, // global_mesg_num
831
+ 6, // num_fields
832
+ { // field_def_num, size, base_type
833
+ FIT_WEATHER_ALERT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
834
+ FIT_WEATHER_ALERT_FIELD_NUM_REPORT_ID, (sizeof(FIT_STRING)*12), FIT_BASE_TYPE_STRING,
835
+ FIT_WEATHER_ALERT_FIELD_NUM_ISSUE_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
836
+ FIT_WEATHER_ALERT_FIELD_NUM_EXPIRE_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
837
+ FIT_WEATHER_ALERT_FIELD_NUM_SEVERITY, (sizeof(FIT_WEATHER_SEVERITY)*1), FIT_BASE_TYPE_ENUM,
838
+ FIT_WEATHER_ALERT_FIELD_NUM_TYPE, (sizeof(FIT_WEATHER_SEVERE_TYPE)*1), FIT_BASE_TYPE_ENUM,
839
+ }
840
+ };
841
+
842
+ const static FIT_NMEA_SENTENCE_MESG_DEF nmea_sentence_mesg_def =
843
+ {
844
+ 0, // reserved_1
845
+ FIT_ARCH_ENDIAN, // arch
846
+ FIT_MESG_NUM_NMEA_SENTENCE, // global_mesg_num
847
+ 3, // num_fields
848
+ { // field_def_num, size, base_type
849
+ FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
850
+ FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP_MS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
851
+ FIT_NMEA_SENTENCE_FIELD_NUM_SENTENCE, (sizeof(FIT_STRING)*83), FIT_BASE_TYPE_STRING,
852
+ }
853
+ };
854
+
855
+ const static FIT_AVIATION_ATTITUDE_MESG_DEF aviation_attitude_mesg_def =
856
+ {
857
+ 0, // reserved_1
858
+ FIT_ARCH_ENDIAN, // arch
859
+ FIT_MESG_NUM_AVIATION_ATTITUDE, // global_mesg_num
860
+ 12, // num_fields
861
+ { // field_def_num, size, base_type
862
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
863
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_SYSTEM_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
864
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP_MS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
865
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_PITCH, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
866
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_ROLL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
867
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_LATERAL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
868
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_NORMAL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
869
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_TURN_RATE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
870
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_TRACK, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
871
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_VALIDITY, (sizeof(FIT_ATTITUDE_VALIDITY)*1), FIT_BASE_TYPE_UINT16,
872
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_STAGE, (sizeof(FIT_ATTITUDE_STAGE)*1), FIT_BASE_TYPE_ENUM,
873
+ FIT_AVIATION_ATTITUDE_FIELD_NUM_ATTITUDE_STAGE_COMPLETE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
874
+ }
875
+ };
876
+
877
+ const static FIT_VIDEO_TITLE_MESG_DEF video_title_mesg_def =
878
+ {
879
+ 0, // reserved_1
880
+ FIT_ARCH_ENDIAN, // arch
881
+ FIT_MESG_NUM_VIDEO_TITLE, // global_mesg_num
882
+ 3, // num_fields
883
+ { // field_def_num, size, base_type
884
+ FIT_VIDEO_TITLE_FIELD_NUM_TEXT, (sizeof(FIT_STRING)*80), FIT_BASE_TYPE_STRING,
885
+ FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
886
+ FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
887
+ }
888
+ };
889
+
890
+ const static FIT_VIDEO_DESCRIPTION_MESG_DEF video_description_mesg_def =
891
+ {
892
+ 0, // reserved_1
893
+ FIT_ARCH_ENDIAN, // arch
894
+ FIT_MESG_NUM_VIDEO_DESCRIPTION, // global_mesg_num
895
+ 3, // num_fields
896
+ { // field_def_num, size, base_type
897
+ FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
898
+ FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
899
+ FIT_VIDEO_DESCRIPTION_FIELD_NUM_TEXT, (sizeof(FIT_STRING)*250), FIT_BASE_TYPE_STRING,
900
+ }
901
+ };
902
+
724
903
  const static FIT_COURSE_MESG_DEF course_mesg_def =
725
904
  {
726
905
  0, // reserved_1
727
906
  FIT_ARCH_ENDIAN, // arch
728
907
  FIT_MESG_NUM_COURSE, // global_mesg_num
729
- 3, // num_fields
908
+ 4, // num_fields
730
909
  { // field_def_num, size, base_type
731
910
  FIT_COURSE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
732
911
  FIT_COURSE_FIELD_NUM_CAPABILITIES, (sizeof(FIT_COURSE_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z,
733
912
  FIT_COURSE_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
913
+ FIT_COURSE_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
734
914
  }
735
915
  };
736
916
 
@@ -739,7 +919,7 @@ const static FIT_COURSE_POINT_MESG_DEF course_point_mesg_def =
739
919
  0, // reserved_1
740
920
  FIT_ARCH_ENDIAN, // arch
741
921
  FIT_MESG_NUM_COURSE_POINT, // global_mesg_num
742
- 7, // num_fields
922
+ 8, // num_fields
743
923
  { // field_def_num, size, base_type
744
924
  FIT_COURSE_POINT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
745
925
  FIT_COURSE_POINT_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
@@ -748,6 +928,158 @@ const static FIT_COURSE_POINT_MESG_DEF course_point_mesg_def =
748
928
  FIT_COURSE_POINT_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
749
929
  FIT_COURSE_POINT_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
750
930
  FIT_COURSE_POINT_FIELD_NUM_TYPE, (sizeof(FIT_COURSE_POINT)*1), FIT_BASE_TYPE_ENUM,
931
+ FIT_COURSE_POINT_FIELD_NUM_FAVORITE, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
932
+ }
933
+ };
934
+
935
+ const static FIT_SEGMENT_ID_MESG_DEF segment_id_mesg_def =
936
+ {
937
+ 0, // reserved_1
938
+ FIT_ARCH_ENDIAN, // arch
939
+ FIT_MESG_NUM_SEGMENT_ID, // global_mesg_num
940
+ 9, // num_fields
941
+ { // field_def_num, size, base_type
942
+ FIT_SEGMENT_ID_FIELD_NUM_USER_PROFILE_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
943
+ FIT_SEGMENT_ID_FIELD_NUM_DEVICE_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
944
+ FIT_SEGMENT_ID_FIELD_NUM_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
945
+ FIT_SEGMENT_ID_FIELD_NUM_UUID, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
946
+ FIT_SEGMENT_ID_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
947
+ FIT_SEGMENT_ID_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
948
+ FIT_SEGMENT_ID_FIELD_NUM_DEFAULT_RACE_LEADER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
949
+ FIT_SEGMENT_ID_FIELD_NUM_DELETE_STATUS, (sizeof(FIT_SEGMENT_DELETE_STATUS)*1), FIT_BASE_TYPE_ENUM,
950
+ FIT_SEGMENT_ID_FIELD_NUM_SELECTION_TYPE, (sizeof(FIT_SEGMENT_SELECTION_TYPE)*1), FIT_BASE_TYPE_ENUM,
951
+ }
952
+ };
953
+
954
+ const static FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_DEF segment_leaderboard_entry_mesg_def =
955
+ {
956
+ 0, // reserved_1
957
+ FIT_ARCH_ENDIAN, // arch
958
+ FIT_MESG_NUM_SEGMENT_LEADERBOARD_ENTRY, // global_mesg_num
959
+ 6, // num_fields
960
+ { // field_def_num, size, base_type
961
+ FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_GROUP_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
962
+ FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_ACTIVITY_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
963
+ FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_SEGMENT_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
964
+ FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
965
+ FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
966
+ FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_TYPE, (sizeof(FIT_SEGMENT_LEADERBOARD_TYPE)*1), FIT_BASE_TYPE_ENUM,
967
+ }
968
+ };
969
+
970
+ const static FIT_SEGMENT_POINT_MESG_DEF segment_point_mesg_def =
971
+ {
972
+ 0, // reserved_1
973
+ FIT_ARCH_ENDIAN, // arch
974
+ FIT_MESG_NUM_SEGMENT_POINT, // global_mesg_num
975
+ 6, // num_fields
976
+ { // field_def_num, size, base_type
977
+ FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
978
+ FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
979
+ FIT_SEGMENT_POINT_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
980
+ FIT_SEGMENT_POINT_FIELD_NUM_LEADER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
981
+ FIT_SEGMENT_POINT_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
982
+ FIT_SEGMENT_POINT_FIELD_NUM_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
983
+ }
984
+ };
985
+
986
+ const static FIT_SEGMENT_LAP_MESG_DEF segment_lap_mesg_def =
987
+ {
988
+ 0, // reserved_1
989
+ FIT_ARCH_ENDIAN, // arch
990
+ FIT_MESG_NUM_SEGMENT_LAP, // global_mesg_num
991
+ 73, // num_fields
992
+ { // field_def_num, size, base_type
993
+ FIT_SEGMENT_LAP_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
994
+ FIT_SEGMENT_LAP_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
995
+ FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
996
+ FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
997
+ FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
998
+ FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
999
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1000
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1001
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1002
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1003
+ FIT_SEGMENT_LAP_FIELD_NUM_NEC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
1004
+ FIT_SEGMENT_LAP_FIELD_NUM_NEC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
1005
+ FIT_SEGMENT_LAP_FIELD_NUM_SWC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
1006
+ FIT_SEGMENT_LAP_FIELD_NUM_SWC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
1007
+ FIT_SEGMENT_LAP_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
1008
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1009
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1010
+ FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1011
+ FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1012
+ FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1013
+ FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1014
+ FIT_SEGMENT_LAP_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1015
+ FIT_SEGMENT_LAP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
1016
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1017
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1018
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1019
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1020
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1021
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1022
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1023
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1024
+ FIT_SEGMENT_LAP_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1025
+ FIT_SEGMENT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16,
1026
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1027
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1028
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1029
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1030
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1031
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1032
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1033
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1034
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1035
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1036
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
1037
+ FIT_SEGMENT_LAP_FIELD_NUM_REPETITION_NUM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1038
+ FIT_SEGMENT_LAP_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1039
+ FIT_SEGMENT_LAP_FIELD_NUM_WKT_STEP_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
1040
+ FIT_SEGMENT_LAP_FIELD_NUM_FRONT_GEAR_SHIFT_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1041
+ FIT_SEGMENT_LAP_FIELD_NUM_REAR_GEAR_SHIFT_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1042
+ FIT_SEGMENT_LAP_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
1043
+ FIT_SEGMENT_LAP_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
1044
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1045
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1046
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1047
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1048
+ FIT_SEGMENT_LAP_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
1049
+ FIT_SEGMENT_LAP_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1050
+ FIT_SEGMENT_LAP_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
1051
+ FIT_SEGMENT_LAP_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1052
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
1053
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
1054
+ FIT_SEGMENT_LAP_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1055
+ FIT_SEGMENT_LAP_FIELD_NUM_SPORT_EVENT, (sizeof(FIT_SPORT_EVENT)*1), FIT_BASE_TYPE_ENUM,
1056
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1057
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1058
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1059
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1060
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_COMBINED_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1061
+ FIT_SEGMENT_LAP_FIELD_NUM_STATUS, (sizeof(FIT_SEGMENT_LAP_STATUS)*1), FIT_BASE_TYPE_ENUM,
1062
+ FIT_SEGMENT_LAP_FIELD_NUM_UUID, (sizeof(FIT_STRING)*33), FIT_BASE_TYPE_STRING,
1063
+ FIT_SEGMENT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1064
+ FIT_SEGMENT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1065
+ FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1066
+ }
1067
+ };
1068
+
1069
+ const static FIT_SEGMENT_FILE_MESG_DEF segment_file_mesg_def =
1070
+ {
1071
+ 0, // reserved_1
1072
+ FIT_ARCH_ENDIAN, // arch
1073
+ FIT_MESG_NUM_SEGMENT_FILE, // global_mesg_num
1074
+ 7, // num_fields
1075
+ { // field_def_num, size, base_type
1076
+ FIT_SEGMENT_FILE_FIELD_NUM_USER_PROFILE_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1077
+ FIT_SEGMENT_FILE_FIELD_NUM_LEADER_GROUP_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1078
+ FIT_SEGMENT_FILE_FIELD_NUM_LEADER_ACTIVITY_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1079
+ FIT_SEGMENT_FILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
1080
+ FIT_SEGMENT_FILE_FIELD_NUM_FILE_UUID, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
1081
+ FIT_SEGMENT_FILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
1082
+ FIT_SEGMENT_FILE_FIELD_NUM_LEADER_TYPE, (sizeof(FIT_SEGMENT_LEADERBOARD_TYPE)*1), FIT_BASE_TYPE_ENUM,
751
1083
  }
752
1084
  };
753
1085
 
@@ -898,6 +1230,140 @@ const static FIT_MONITORING_MESG_DEF monitoring_mesg_def =
898
1230
  }
899
1231
  };
900
1232
 
1233
+ const static FIT_HR_MESG_DEF hr_mesg_def =
1234
+ {
1235
+ 0, // reserved_1
1236
+ FIT_ARCH_ENDIAN, // arch
1237
+ FIT_MESG_NUM_HR, // global_mesg_num
1238
+ 6, // num_fields
1239
+ { // field_def_num, size, base_type
1240
+ FIT_HR_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
1241
+ FIT_HR_FIELD_NUM_EVENT_TIMESTAMP, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1242
+ FIT_HR_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1243
+ FIT_HR_FIELD_NUM_TIME256, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1244
+ FIT_HR_FIELD_NUM_FILTERED_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1245
+ FIT_HR_FIELD_NUM_EVENT_TIMESTAMP_12, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE,
1246
+ }
1247
+ };
1248
+
1249
+ const static FIT_ANT_RX_MESG_DEF ant_rx_mesg_def =
1250
+ {
1251
+ 0, // reserved_1
1252
+ FIT_ARCH_ENDIAN, // arch
1253
+ FIT_MESG_NUM_ANT_RX, // global_mesg_num
1254
+ 6, // num_fields
1255
+ { // field_def_num, size, base_type
1256
+ FIT_ANT_RX_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
1257
+ FIT_ANT_RX_FIELD_NUM_DATA, (sizeof(FIT_BYTE)*8), FIT_BASE_TYPE_BYTE,
1258
+ FIT_ANT_RX_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1259
+ FIT_ANT_RX_FIELD_NUM_MESG_ID, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE,
1260
+ FIT_ANT_RX_FIELD_NUM_MESG_DATA, (sizeof(FIT_BYTE)*9), FIT_BASE_TYPE_BYTE,
1261
+ FIT_ANT_RX_FIELD_NUM_CHANNEL_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1262
+ }
1263
+ };
1264
+
1265
+ const static FIT_ANT_TX_MESG_DEF ant_tx_mesg_def =
1266
+ {
1267
+ 0, // reserved_1
1268
+ FIT_ARCH_ENDIAN, // arch
1269
+ FIT_MESG_NUM_ANT_TX, // global_mesg_num
1270
+ 6, // num_fields
1271
+ { // field_def_num, size, base_type
1272
+ FIT_ANT_TX_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
1273
+ FIT_ANT_TX_FIELD_NUM_DATA, (sizeof(FIT_BYTE)*8), FIT_BASE_TYPE_BYTE,
1274
+ FIT_ANT_TX_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
1275
+ FIT_ANT_TX_FIELD_NUM_MESG_ID, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE,
1276
+ FIT_ANT_TX_FIELD_NUM_MESG_DATA, (sizeof(FIT_BYTE)*9), FIT_BASE_TYPE_BYTE,
1277
+ FIT_ANT_TX_FIELD_NUM_CHANNEL_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1278
+ }
1279
+ };
1280
+
1281
+ const static FIT_EXD_SCREEN_CONFIGURATION_MESG_DEF exd_screen_configuration_mesg_def =
1282
+ {
1283
+ 0, // reserved_1
1284
+ FIT_ARCH_ENDIAN, // arch
1285
+ FIT_MESG_NUM_EXD_SCREEN_CONFIGURATION, // global_mesg_num
1286
+ 4, // num_fields
1287
+ { // field_def_num, size, base_type
1288
+ FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1289
+ FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_FIELD_COUNT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1290
+ FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_LAYOUT, (sizeof(FIT_EXD_LAYOUT)*1), FIT_BASE_TYPE_ENUM,
1291
+ FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
1292
+ }
1293
+ };
1294
+
1295
+ const static FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_DEF exd_data_field_configuration_mesg_def =
1296
+ {
1297
+ 0, // reserved_1
1298
+ FIT_ARCH_ENDIAN, // arch
1299
+ FIT_MESG_NUM_EXD_DATA_FIELD_CONFIGURATION, // global_mesg_num
1300
+ 6, // num_fields
1301
+ { // field_def_num, size, base_type
1302
+ FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1303
+ FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE,
1304
+ FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_FIELD_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1305
+ FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_COUNT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1306
+ FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_DISPLAY_TYPE, (sizeof(FIT_EXD_DISPLAY_TYPE)*1), FIT_BASE_TYPE_ENUM,
1307
+ FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_TITLE, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
1308
+ }
1309
+ };
1310
+
1311
+ const static FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_DEF exd_data_concept_configuration_mesg_def =
1312
+ {
1313
+ 0, // reserved_1
1314
+ FIT_ARCH_ENDIAN, // arch
1315
+ FIT_MESG_NUM_EXD_DATA_CONCEPT_CONFIGURATION, // global_mesg_num
1316
+ 11, // num_fields
1317
+ { // field_def_num, size, base_type
1318
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1319
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE,
1320
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_FIELD_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1321
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1322
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_PAGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1323
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_KEY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1324
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCALING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1325
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_UNITS, (sizeof(FIT_EXD_DATA_UNITS)*1), FIT_BASE_TYPE_ENUM,
1326
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_QUALIFIER, (sizeof(FIT_EXD_QUALIFIERS)*1), FIT_BASE_TYPE_ENUM,
1327
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DESCRIPTOR, (sizeof(FIT_EXD_DESCRIPTORS)*1), FIT_BASE_TYPE_ENUM,
1328
+ FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_IS_SIGNED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
1329
+ }
1330
+ };
1331
+
1332
+ const static FIT_FIELD_DESCRIPTION_MESG_DEF field_description_mesg_def =
1333
+ {
1334
+ 0, // reserved_1
1335
+ FIT_ARCH_ENDIAN, // arch
1336
+ FIT_MESG_NUM_FIELD_DESCRIPTION, // global_mesg_num
1337
+ 10, // num_fields
1338
+ { // field_def_num, size, base_type
1339
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_NAME, (sizeof(FIT_STRING)*64), FIT_BASE_TYPE_STRING,
1340
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
1341
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_UNIT_ID, (sizeof(FIT_FIT_BASE_UNIT)*1), FIT_BASE_TYPE_UINT16,
1342
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16,
1343
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1344
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1345
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID, (sizeof(FIT_FIT_BASE_TYPE)*1), FIT_BASE_TYPE_UINT8,
1346
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_SCALE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1347
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_OFFSET, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
1348
+ FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_FIELD_NUM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1349
+ }
1350
+ };
1351
+
1352
+ const static FIT_DEVELOPER_DATA_ID_MESG_DEF developer_data_id_mesg_def =
1353
+ {
1354
+ 0, // reserved_1
1355
+ FIT_ARCH_ENDIAN, // arch
1356
+ FIT_MESG_NUM_DEVELOPER_DATA_ID, // global_mesg_num
1357
+ 5, // num_fields
1358
+ { // field_def_num, size, base_type
1359
+ FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_ID, (sizeof(FIT_BYTE)*16), FIT_BASE_TYPE_BYTE,
1360
+ FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_ID, (sizeof(FIT_BYTE)*16), FIT_BASE_TYPE_BYTE,
1361
+ FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_VERSION, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
1362
+ FIT_DEVELOPER_DATA_ID_FIELD_NUM_MANUFACTURER_ID, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
1363
+ FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_DATA_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
1364
+ }
1365
+ };
1366
+
901
1367
 
902
1368
  const FIT_CONST_MESG_DEF_PTR fit_mesg_defs[] =
903
1369
  {
@@ -915,6 +1381,7 @@ const FIT_CONST_MESG_DEF_PTR fit_mesg_defs[] =
915
1381
  (FIT_CONST_MESG_DEF_PTR) &hrm_profile_mesg_def,
916
1382
  (FIT_CONST_MESG_DEF_PTR) &sdm_profile_mesg_def,
917
1383
  (FIT_CONST_MESG_DEF_PTR) &bike_profile_mesg_def,
1384
+ (FIT_CONST_MESG_DEF_PTR) &connectivity_mesg_def,
918
1385
  (FIT_CONST_MESG_DEF_PTR) &zones_target_mesg_def,
919
1386
  (FIT_CONST_MESG_DEF_PTR) &sport_mesg_def,
920
1387
  (FIT_CONST_MESG_DEF_PTR) &hr_zone_mesg_def,
@@ -930,9 +1397,21 @@ const FIT_CONST_MESG_DEF_PTR fit_mesg_defs[] =
930
1397
  (FIT_CONST_MESG_DEF_PTR) &record_mesg_def,
931
1398
  (FIT_CONST_MESG_DEF_PTR) &event_mesg_def,
932
1399
  (FIT_CONST_MESG_DEF_PTR) &device_info_mesg_def,
1400
+ (FIT_CONST_MESG_DEF_PTR) &training_file_mesg_def,
933
1401
  (FIT_CONST_MESG_DEF_PTR) &hrv_mesg_def,
1402
+ (FIT_CONST_MESG_DEF_PTR) &weather_conditions_mesg_def,
1403
+ (FIT_CONST_MESG_DEF_PTR) &weather_alert_mesg_def,
1404
+ (FIT_CONST_MESG_DEF_PTR) &nmea_sentence_mesg_def,
1405
+ (FIT_CONST_MESG_DEF_PTR) &aviation_attitude_mesg_def,
1406
+ (FIT_CONST_MESG_DEF_PTR) &video_title_mesg_def,
1407
+ (FIT_CONST_MESG_DEF_PTR) &video_description_mesg_def,
934
1408
  (FIT_CONST_MESG_DEF_PTR) &course_mesg_def,
935
1409
  (FIT_CONST_MESG_DEF_PTR) &course_point_mesg_def,
1410
+ (FIT_CONST_MESG_DEF_PTR) &segment_id_mesg_def,
1411
+ (FIT_CONST_MESG_DEF_PTR) &segment_leaderboard_entry_mesg_def,
1412
+ (FIT_CONST_MESG_DEF_PTR) &segment_point_mesg_def,
1413
+ (FIT_CONST_MESG_DEF_PTR) &segment_lap_mesg_def,
1414
+ (FIT_CONST_MESG_DEF_PTR) &segment_file_mesg_def,
936
1415
  (FIT_CONST_MESG_DEF_PTR) &workout_mesg_def,
937
1416
  (FIT_CONST_MESG_DEF_PTR) &workout_step_mesg_def,
938
1417
  (FIT_CONST_MESG_DEF_PTR) &schedule_mesg_def,
@@ -941,4 +1420,12 @@ const FIT_CONST_MESG_DEF_PTR fit_mesg_defs[] =
941
1420
  (FIT_CONST_MESG_DEF_PTR) &blood_pressure_mesg_def,
942
1421
  (FIT_CONST_MESG_DEF_PTR) &monitoring_info_mesg_def,
943
1422
  (FIT_CONST_MESG_DEF_PTR) &monitoring_mesg_def,
1423
+ (FIT_CONST_MESG_DEF_PTR) &hr_mesg_def,
1424
+ (FIT_CONST_MESG_DEF_PTR) &ant_rx_mesg_def,
1425
+ (FIT_CONST_MESG_DEF_PTR) &ant_tx_mesg_def,
1426
+ (FIT_CONST_MESG_DEF_PTR) &exd_screen_configuration_mesg_def,
1427
+ (FIT_CONST_MESG_DEF_PTR) &exd_data_field_configuration_mesg_def,
1428
+ (FIT_CONST_MESG_DEF_PTR) &exd_data_concept_configuration_mesg_def,
1429
+ (FIT_CONST_MESG_DEF_PTR) &field_description_mesg_def,
1430
+ (FIT_CONST_MESG_DEF_PTR) &developer_data_id_mesg_def,
944
1431
  };