rubyfit 0.0.5 → 0.0.6

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.
@@ -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
  };