/////////////////////////////////////////////////////////////////////////////////////////////
// Copyright 2025 Garmin International, Inc.
// Licensed under the Flexible and Interoperable Data Transfer (FIT) Protocol License; you
// may not use this file except in compliance with the Flexible and Interoperable Data
// Transfer (FIT) Protocol License.
/////////////////////////////////////////////////////////////////////////////////////////////
// ****WARNING****  This file is auto-generated!  Do NOT edit this file.
// Profile Version = 21.171.0Release
// Tag = production/release/21.171.0-0-g57fed75
// Product = EXAMPLE
// Alignment = 4 bytes, padding disabled.
/////////////////////////////////////////////////////////////////////////////////////////////


#if !defined(FIT_EXAMPLE_H)
#define FIT_EXAMPLE_H

#include "fit.h"

#if defined(__cplusplus)
   extern "C" {
#endif


///////////////////////////////////////////////////////////////////////
// Public Definitions
///////////////////////////////////////////////////////////////////////

#define FIT_ALIGNMENT                  4

///////////////////////////////////////////////////////////////////////
// Types
///////////////////////////////////////////////////////////////////////


typedef FIT_ENUM FIT_FILE;
#define FIT_FILE_INVALID                                                         FIT_ENUM_INVALID
#define FIT_FILE_DEVICE                                                          (FIT_CAST(FIT_FILE, 1)) // Read only, single file. Must be in root directory.
#define FIT_FILE_SETTINGS                                                        (FIT_CAST(FIT_FILE, 2)) // Read/write, single file. Directory=Settings
#define FIT_FILE_SPORT                                                           (FIT_CAST(FIT_FILE, 3)) // Read/write, multiple files, file number = sport type. Directory=Sports
#define FIT_FILE_ACTIVITY                                                        (FIT_CAST(FIT_FILE, 4)) // Read/erase, multiple files. Directory=Activities
#define FIT_FILE_WORKOUT                                                         (FIT_CAST(FIT_FILE, 5)) // Read/write/erase, multiple files. Directory=Workouts
#define FIT_FILE_COURSE                                                          (FIT_CAST(FIT_FILE, 6)) // Read/write/erase, multiple files. Directory=Courses
#define FIT_FILE_SCHEDULES                                                       (FIT_CAST(FIT_FILE, 7)) // Read/write, single file. Directory=Schedules
#define FIT_FILE_WEIGHT                                                          (FIT_CAST(FIT_FILE, 9)) // Read only, single file. Circular buffer. All message definitions at start of file. Directory=Weight
#define FIT_FILE_TOTALS                                                          (FIT_CAST(FIT_FILE, 10)) // Read only, single file. Directory=Totals
#define FIT_FILE_GOALS                                                           (FIT_CAST(FIT_FILE, 11)) // Read/write, single file. Directory=Goals
#define FIT_FILE_BLOOD_PRESSURE                                                  (FIT_CAST(FIT_FILE, 14)) // Read only. Directory=Blood Pressure
#define FIT_FILE_MONITORING_A                                                    (FIT_CAST(FIT_FILE, 15)) // Read only. Directory=Monitoring. File number=sub type.
#define FIT_FILE_ACTIVITY_SUMMARY                                                (FIT_CAST(FIT_FILE, 20)) // Read/erase, multiple files. Directory=Activities
#define FIT_FILE_MONITORING_DAILY                                                (FIT_CAST(FIT_FILE, 28))
#define FIT_FILE_MONITORING_B                                                    (FIT_CAST(FIT_FILE, 32)) // Read only. Directory=Monitoring. File number=identifier
#define FIT_FILE_SEGMENT                                                         (FIT_CAST(FIT_FILE, 34)) // Read/write/erase. Multiple Files. Directory=Segments
#define FIT_FILE_SEGMENT_LIST                                                    (FIT_CAST(FIT_FILE, 35)) // Read/write/erase. Single File. Directory=Segments
#define FIT_FILE_EXD_CONFIGURATION                                               (FIT_CAST(FIT_FILE, 40)) // Read/write/erase. Single File. Directory=Settings
#define FIT_FILE_MFG_RANGE_MIN                                                   (FIT_CAST(FIT_FILE, 0xF7)) // 0xF7 - 0xFE reserved for manufacturer specific file types
#define FIT_FILE_MFG_RANGE_MAX                                                   (FIT_CAST(FIT_FILE, 0xFE)) // 0xF7 - 0xFE reserved for manufacturer specific file types
#define FIT_FILE_COUNT                                                           20

typedef FIT_UINT16 FIT_MESG_NUM;
#define FIT_MESG_NUM_INVALID                                                     FIT_UINT16_INVALID
#define FIT_MESG_NUM_FILE_ID                                                     (FIT_CAST(FIT_MESG_NUM, 0))
#define FIT_MESG_NUM_CAPABILITIES                                                (FIT_CAST(FIT_MESG_NUM, 1))
#define FIT_MESG_NUM_DEVICE_SETTINGS                                             (FIT_CAST(FIT_MESG_NUM, 2))
#define FIT_MESG_NUM_USER_PROFILE                                                (FIT_CAST(FIT_MESG_NUM, 3))
#define FIT_MESG_NUM_HRM_PROFILE                                                 (FIT_CAST(FIT_MESG_NUM, 4))
#define FIT_MESG_NUM_SDM_PROFILE                                                 (FIT_CAST(FIT_MESG_NUM, 5))
#define FIT_MESG_NUM_BIKE_PROFILE                                                (FIT_CAST(FIT_MESG_NUM, 6))
#define FIT_MESG_NUM_ZONES_TARGET                                                (FIT_CAST(FIT_MESG_NUM, 7))
#define FIT_MESG_NUM_HR_ZONE                                                     (FIT_CAST(FIT_MESG_NUM, 8))
#define FIT_MESG_NUM_POWER_ZONE                                                  (FIT_CAST(FIT_MESG_NUM, 9))
#define FIT_MESG_NUM_MET_ZONE                                                    (FIT_CAST(FIT_MESG_NUM, 10))
#define FIT_MESG_NUM_SPORT                                                       (FIT_CAST(FIT_MESG_NUM, 12))
#define FIT_MESG_NUM_TRAINING_SETTINGS                                           (FIT_CAST(FIT_MESG_NUM, 13))
#define FIT_MESG_NUM_GOAL                                                        (FIT_CAST(FIT_MESG_NUM, 15))
#define FIT_MESG_NUM_SESSION                                                     (FIT_CAST(FIT_MESG_NUM, 18))
#define FIT_MESG_NUM_LAP                                                         (FIT_CAST(FIT_MESG_NUM, 19))
#define FIT_MESG_NUM_RECORD                                                      (FIT_CAST(FIT_MESG_NUM, 20))
#define FIT_MESG_NUM_EVENT                                                       (FIT_CAST(FIT_MESG_NUM, 21))
#define FIT_MESG_NUM_DEVICE_INFO                                                 (FIT_CAST(FIT_MESG_NUM, 23))
#define FIT_MESG_NUM_WORKOUT                                                     (FIT_CAST(FIT_MESG_NUM, 26))
#define FIT_MESG_NUM_WORKOUT_STEP                                                (FIT_CAST(FIT_MESG_NUM, 27))
#define FIT_MESG_NUM_SCHEDULE                                                    (FIT_CAST(FIT_MESG_NUM, 28))
#define FIT_MESG_NUM_WEIGHT_SCALE                                                (FIT_CAST(FIT_MESG_NUM, 30))
#define FIT_MESG_NUM_COURSE                                                      (FIT_CAST(FIT_MESG_NUM, 31))
#define FIT_MESG_NUM_COURSE_POINT                                                (FIT_CAST(FIT_MESG_NUM, 32))
#define FIT_MESG_NUM_TOTALS                                                      (FIT_CAST(FIT_MESG_NUM, 33))
#define FIT_MESG_NUM_ACTIVITY                                                    (FIT_CAST(FIT_MESG_NUM, 34))
#define FIT_MESG_NUM_SOFTWARE                                                    (FIT_CAST(FIT_MESG_NUM, 35))
#define FIT_MESG_NUM_FILE_CAPABILITIES                                           (FIT_CAST(FIT_MESG_NUM, 37))
#define FIT_MESG_NUM_MESG_CAPABILITIES                                           (FIT_CAST(FIT_MESG_NUM, 38))
#define FIT_MESG_NUM_FIELD_CAPABILITIES                                          (FIT_CAST(FIT_MESG_NUM, 39))
#define FIT_MESG_NUM_FILE_CREATOR                                                (FIT_CAST(FIT_MESG_NUM, 49))
#define FIT_MESG_NUM_BLOOD_PRESSURE                                              (FIT_CAST(FIT_MESG_NUM, 51))
#define FIT_MESG_NUM_SPEED_ZONE                                                  (FIT_CAST(FIT_MESG_NUM, 53))
#define FIT_MESG_NUM_MONITORING                                                  (FIT_CAST(FIT_MESG_NUM, 55))
#define FIT_MESG_NUM_TRAINING_FILE                                               (FIT_CAST(FIT_MESG_NUM, 72))
#define FIT_MESG_NUM_HRV                                                         (FIT_CAST(FIT_MESG_NUM, 78))
#define FIT_MESG_NUM_ANT_RX                                                      (FIT_CAST(FIT_MESG_NUM, 80))
#define FIT_MESG_NUM_ANT_TX                                                      (FIT_CAST(FIT_MESG_NUM, 81))
#define FIT_MESG_NUM_ANT_CHANNEL_ID                                              (FIT_CAST(FIT_MESG_NUM, 82))
#define FIT_MESG_NUM_LENGTH                                                      (FIT_CAST(FIT_MESG_NUM, 101))
#define FIT_MESG_NUM_MONITORING_INFO                                             (FIT_CAST(FIT_MESG_NUM, 103))
#define FIT_MESG_NUM_PAD                                                         (FIT_CAST(FIT_MESG_NUM, 105))
#define FIT_MESG_NUM_SLAVE_DEVICE                                                (FIT_CAST(FIT_MESG_NUM, 106))
#define FIT_MESG_NUM_CONNECTIVITY                                                (FIT_CAST(FIT_MESG_NUM, 127))
#define FIT_MESG_NUM_WEATHER_CONDITIONS                                          (FIT_CAST(FIT_MESG_NUM, 128))
#define FIT_MESG_NUM_WEATHER_ALERT                                               (FIT_CAST(FIT_MESG_NUM, 129))
#define FIT_MESG_NUM_CADENCE_ZONE                                                (FIT_CAST(FIT_MESG_NUM, 131))
#define FIT_MESG_NUM_HR                                                          (FIT_CAST(FIT_MESG_NUM, 132))
#define FIT_MESG_NUM_SEGMENT_LAP                                                 (FIT_CAST(FIT_MESG_NUM, 142))
#define FIT_MESG_NUM_MEMO_GLOB                                                   (FIT_CAST(FIT_MESG_NUM, 145))
#define FIT_MESG_NUM_SEGMENT_ID                                                  (FIT_CAST(FIT_MESG_NUM, 148))
#define FIT_MESG_NUM_SEGMENT_LEADERBOARD_ENTRY                                   (FIT_CAST(FIT_MESG_NUM, 149))
#define FIT_MESG_NUM_SEGMENT_POINT                                               (FIT_CAST(FIT_MESG_NUM, 150))
#define FIT_MESG_NUM_SEGMENT_FILE                                                (FIT_CAST(FIT_MESG_NUM, 151))
#define FIT_MESG_NUM_WORKOUT_SESSION                                             (FIT_CAST(FIT_MESG_NUM, 158))
#define FIT_MESG_NUM_WATCHFACE_SETTINGS                                          (FIT_CAST(FIT_MESG_NUM, 159))
#define FIT_MESG_NUM_GPS_METADATA                                                (FIT_CAST(FIT_MESG_NUM, 160))
#define FIT_MESG_NUM_CAMERA_EVENT                                                (FIT_CAST(FIT_MESG_NUM, 161))
#define FIT_MESG_NUM_TIMESTAMP_CORRELATION                                       (FIT_CAST(FIT_MESG_NUM, 162))
#define FIT_MESG_NUM_GYROSCOPE_DATA                                              (FIT_CAST(FIT_MESG_NUM, 164))
#define FIT_MESG_NUM_ACCELEROMETER_DATA                                          (FIT_CAST(FIT_MESG_NUM, 165))
#define FIT_MESG_NUM_THREE_D_SENSOR_CALIBRATION                                  (FIT_CAST(FIT_MESG_NUM, 167))
#define FIT_MESG_NUM_VIDEO_FRAME                                                 (FIT_CAST(FIT_MESG_NUM, 169))
#define FIT_MESG_NUM_OBDII_DATA                                                  (FIT_CAST(FIT_MESG_NUM, 174))
#define FIT_MESG_NUM_NMEA_SENTENCE                                               (FIT_CAST(FIT_MESG_NUM, 177))
#define FIT_MESG_NUM_AVIATION_ATTITUDE                                           (FIT_CAST(FIT_MESG_NUM, 178))
#define FIT_MESG_NUM_VIDEO                                                       (FIT_CAST(FIT_MESG_NUM, 184))
#define FIT_MESG_NUM_VIDEO_TITLE                                                 (FIT_CAST(FIT_MESG_NUM, 185))
#define FIT_MESG_NUM_VIDEO_DESCRIPTION                                           (FIT_CAST(FIT_MESG_NUM, 186))
#define FIT_MESG_NUM_VIDEO_CLIP                                                  (FIT_CAST(FIT_MESG_NUM, 187))
#define FIT_MESG_NUM_OHR_SETTINGS                                                (FIT_CAST(FIT_MESG_NUM, 188))
#define FIT_MESG_NUM_EXD_SCREEN_CONFIGURATION                                    (FIT_CAST(FIT_MESG_NUM, 200))
#define FIT_MESG_NUM_EXD_DATA_FIELD_CONFIGURATION                                (FIT_CAST(FIT_MESG_NUM, 201))
#define FIT_MESG_NUM_EXD_DATA_CONCEPT_CONFIGURATION                              (FIT_CAST(FIT_MESG_NUM, 202))
#define FIT_MESG_NUM_FIELD_DESCRIPTION                                           (FIT_CAST(FIT_MESG_NUM, 206))
#define FIT_MESG_NUM_DEVELOPER_DATA_ID                                           (FIT_CAST(FIT_MESG_NUM, 207))
#define FIT_MESG_NUM_MAGNETOMETER_DATA                                           (FIT_CAST(FIT_MESG_NUM, 208))
#define FIT_MESG_NUM_BAROMETER_DATA                                              (FIT_CAST(FIT_MESG_NUM, 209))
#define FIT_MESG_NUM_ONE_D_SENSOR_CALIBRATION                                    (FIT_CAST(FIT_MESG_NUM, 210))
#define FIT_MESG_NUM_MONITORING_HR_DATA                                          (FIT_CAST(FIT_MESG_NUM, 211))
#define FIT_MESG_NUM_TIME_IN_ZONE                                                (FIT_CAST(FIT_MESG_NUM, 216))
#define FIT_MESG_NUM_SET                                                         (FIT_CAST(FIT_MESG_NUM, 225))
#define FIT_MESG_NUM_STRESS_LEVEL                                                (FIT_CAST(FIT_MESG_NUM, 227))
#define FIT_MESG_NUM_MAX_MET_DATA                                                (FIT_CAST(FIT_MESG_NUM, 229))
#define FIT_MESG_NUM_DIVE_SETTINGS                                               (FIT_CAST(FIT_MESG_NUM, 258))
#define FIT_MESG_NUM_DIVE_GAS                                                    (FIT_CAST(FIT_MESG_NUM, 259))
#define FIT_MESG_NUM_DIVE_ALARM                                                  (FIT_CAST(FIT_MESG_NUM, 262))
#define FIT_MESG_NUM_EXERCISE_TITLE                                              (FIT_CAST(FIT_MESG_NUM, 264))
#define FIT_MESG_NUM_DIVE_SUMMARY                                                (FIT_CAST(FIT_MESG_NUM, 268))
#define FIT_MESG_NUM_SPO2_DATA                                                   (FIT_CAST(FIT_MESG_NUM, 269))
#define FIT_MESG_NUM_SLEEP_LEVEL                                                 (FIT_CAST(FIT_MESG_NUM, 275))
#define FIT_MESG_NUM_JUMP                                                        (FIT_CAST(FIT_MESG_NUM, 285))
#define FIT_MESG_NUM_AAD_ACCEL_FEATURES                                          (FIT_CAST(FIT_MESG_NUM, 289))
#define FIT_MESG_NUM_BEAT_INTERVALS                                              (FIT_CAST(FIT_MESG_NUM, 290))
#define FIT_MESG_NUM_RESPIRATION_RATE                                            (FIT_CAST(FIT_MESG_NUM, 297))
#define FIT_MESG_NUM_HSA_ACCELEROMETER_DATA                                      (FIT_CAST(FIT_MESG_NUM, 302))
#define FIT_MESG_NUM_HSA_STEP_DATA                                               (FIT_CAST(FIT_MESG_NUM, 304))
#define FIT_MESG_NUM_HSA_SPO2_DATA                                               (FIT_CAST(FIT_MESG_NUM, 305))
#define FIT_MESG_NUM_HSA_STRESS_DATA                                             (FIT_CAST(FIT_MESG_NUM, 306))
#define FIT_MESG_NUM_HSA_RESPIRATION_DATA                                        (FIT_CAST(FIT_MESG_NUM, 307))
#define FIT_MESG_NUM_HSA_HEART_RATE_DATA                                         (FIT_CAST(FIT_MESG_NUM, 308))
#define FIT_MESG_NUM_SPLIT                                                       (FIT_CAST(FIT_MESG_NUM, 312))
#define FIT_MESG_NUM_SPLIT_SUMMARY                                               (FIT_CAST(FIT_MESG_NUM, 313))
#define FIT_MESG_NUM_HSA_BODY_BATTERY_DATA                                       (FIT_CAST(FIT_MESG_NUM, 314))
#define FIT_MESG_NUM_HSA_EVENT                                                   (FIT_CAST(FIT_MESG_NUM, 315))
#define FIT_MESG_NUM_CLIMB_PRO                                                   (FIT_CAST(FIT_MESG_NUM, 317))
#define FIT_MESG_NUM_TANK_UPDATE                                                 (FIT_CAST(FIT_MESG_NUM, 319))
#define FIT_MESG_NUM_TANK_SUMMARY                                                (FIT_CAST(FIT_MESG_NUM, 323))
#define FIT_MESG_NUM_SLEEP_ASSESSMENT                                            (FIT_CAST(FIT_MESG_NUM, 346))
#define FIT_MESG_NUM_HRV_STATUS_SUMMARY                                          (FIT_CAST(FIT_MESG_NUM, 370))
#define FIT_MESG_NUM_HRV_VALUE                                                   (FIT_CAST(FIT_MESG_NUM, 371))
#define FIT_MESG_NUM_RAW_BBI                                                     (FIT_CAST(FIT_MESG_NUM, 372))
#define FIT_MESG_NUM_DEVICE_AUX_BATTERY_INFO                                     (FIT_CAST(FIT_MESG_NUM, 375))
#define FIT_MESG_NUM_HSA_GYROSCOPE_DATA                                          (FIT_CAST(FIT_MESG_NUM, 376))
#define FIT_MESG_NUM_CHRONO_SHOT_SESSION                                         (FIT_CAST(FIT_MESG_NUM, 387))
#define FIT_MESG_NUM_CHRONO_SHOT_DATA                                            (FIT_CAST(FIT_MESG_NUM, 388))
#define FIT_MESG_NUM_HSA_CONFIGURATION_DATA                                      (FIT_CAST(FIT_MESG_NUM, 389))
#define FIT_MESG_NUM_DIVE_APNEA_ALARM                                            (FIT_CAST(FIT_MESG_NUM, 393))
#define FIT_MESG_NUM_SKIN_TEMP_OVERNIGHT                                         (FIT_CAST(FIT_MESG_NUM, 398))
#define FIT_MESG_NUM_HSA_WRIST_TEMPERATURE_DATA                                  (FIT_CAST(FIT_MESG_NUM, 409)) // Message number for the HSA wrist temperature data message
#define FIT_MESG_NUM_MFG_RANGE_MIN                                               (FIT_CAST(FIT_MESG_NUM, 0xFF00)) // 0xFF00 - 0xFFFE reserved for manufacturer specific messages
#define FIT_MESG_NUM_MFG_RANGE_MAX                                               (FIT_CAST(FIT_MESG_NUM, 0xFFFE)) // 0xFF00 - 0xFFFE reserved for manufacturer specific messages
#define FIT_MESG_NUM_COUNT                                                       123

typedef FIT_UINT8 FIT_CHECKSUM;
#define FIT_CHECKSUM_INVALID                                                     FIT_UINT8_INVALID
#define FIT_CHECKSUM_CLEAR                                                       (FIT_CAST(FIT_CHECKSUM, 0)) // Allows clear of checksum for flash memory where can only write 1 to 0 without erasing sector.
#define FIT_CHECKSUM_OK                                                          (FIT_CAST(FIT_CHECKSUM, 1)) // Set to mark checksum as valid if computes to invalid values 0 or 0xFF. Checksum can also be set to ok to save encoding computation time.
#define FIT_CHECKSUM_COUNT                                                       2

typedef FIT_UINT8Z FIT_FILE_FLAGS;
#define FIT_FILE_FLAGS_INVALID                                                   FIT_UINT8Z_INVALID
#define FIT_FILE_FLAGS_READ                                                      (FIT_CAST(FIT_FILE_FLAGS, 0x02))
#define FIT_FILE_FLAGS_WRITE                                                     (FIT_CAST(FIT_FILE_FLAGS, 0x04))
#define FIT_FILE_FLAGS_ERASE                                                     (FIT_CAST(FIT_FILE_FLAGS, 0x08))
#define FIT_FILE_FLAGS_COUNT                                                     3

typedef FIT_ENUM FIT_MESG_COUNT;
#define FIT_MESG_COUNT_INVALID                                                   FIT_ENUM_INVALID
#define FIT_MESG_COUNT_NUM_PER_FILE                                              (FIT_CAST(FIT_MESG_COUNT, 0))
#define FIT_MESG_COUNT_MAX_PER_FILE                                              (FIT_CAST(FIT_MESG_COUNT, 1))
#define FIT_MESG_COUNT_MAX_PER_FILE_TYPE                                         (FIT_CAST(FIT_MESG_COUNT, 2))
#define FIT_MESG_COUNT_COUNT                                                     3

typedef FIT_UINT32 FIT_DATE_TIME; // seconds since UTC 00:00 Dec 31 1989
#define FIT_DATE_TIME_INVALID                                                    FIT_UINT32_INVALID
#define FIT_DATE_TIME_MIN                                                        (FIT_CAST(FIT_DATE_TIME, 0x10000000)) // if date_time is < 0x10000000 then it is system time (seconds from device power on)
#define FIT_DATE_TIME_COUNT                                                      1

typedef FIT_UINT32 FIT_LOCAL_DATE_TIME; // seconds since 00:00 Dec 31 1989 in local time zone
#define FIT_LOCAL_DATE_TIME_INVALID                                              FIT_UINT32_INVALID
#define FIT_LOCAL_DATE_TIME_MIN                                                  (FIT_CAST(FIT_LOCAL_DATE_TIME, 0x10000000)) // if date_time is < 0x10000000 then it is system time (seconds from device power on)
#define FIT_LOCAL_DATE_TIME_COUNT                                                1

typedef FIT_UINT16 FIT_MESSAGE_INDEX;
#define FIT_MESSAGE_INDEX_INVALID                                                FIT_UINT16_INVALID
#define FIT_MESSAGE_INDEX_SELECTED                                               (FIT_CAST(FIT_MESSAGE_INDEX, 0x8000)) // message is selected if set
#define FIT_MESSAGE_INDEX_RESERVED                                               (FIT_CAST(FIT_MESSAGE_INDEX, 0x7000)) // reserved (default 0)
#define FIT_MESSAGE_INDEX_MASK                                                   (FIT_CAST(FIT_MESSAGE_INDEX, 0x0FFF)) // index
#define FIT_MESSAGE_INDEX_COUNT                                                  3

typedef FIT_UINT8 FIT_DEVICE_INDEX;
#define FIT_DEVICE_INDEX_INVALID                                                 FIT_UINT8_INVALID
#define FIT_DEVICE_INDEX_CREATOR                                                 (FIT_CAST(FIT_DEVICE_INDEX, 0)) // Creator of the file is always device index 0.
#define FIT_DEVICE_INDEX_COUNT                                                   1

typedef FIT_ENUM FIT_GENDER;
#define FIT_GENDER_INVALID                                                       FIT_ENUM_INVALID
#define FIT_GENDER_FEMALE                                                        (FIT_CAST(FIT_GENDER, 0))
#define FIT_GENDER_MALE                                                          (FIT_CAST(FIT_GENDER, 1))
#define FIT_GENDER_COUNT                                                         2

typedef FIT_ENUM FIT_LANGUAGE;
#define FIT_LANGUAGE_INVALID                                                     FIT_ENUM_INVALID
#define FIT_LANGUAGE_ENGLISH                                                     (FIT_CAST(FIT_LANGUAGE, 0))
#define FIT_LANGUAGE_FRENCH                                                      (FIT_CAST(FIT_LANGUAGE, 1))
#define FIT_LANGUAGE_ITALIAN                                                     (FIT_CAST(FIT_LANGUAGE, 2))
#define FIT_LANGUAGE_GERMAN                                                      (FIT_CAST(FIT_LANGUAGE, 3))
#define FIT_LANGUAGE_SPANISH                                                     (FIT_CAST(FIT_LANGUAGE, 4))
#define FIT_LANGUAGE_CROATIAN                                                    (FIT_CAST(FIT_LANGUAGE, 5))
#define FIT_LANGUAGE_CZECH                                                       (FIT_CAST(FIT_LANGUAGE, 6))
#define FIT_LANGUAGE_DANISH                                                      (FIT_CAST(FIT_LANGUAGE, 7))
#define FIT_LANGUAGE_DUTCH                                                       (FIT_CAST(FIT_LANGUAGE, 8))
#define FIT_LANGUAGE_FINNISH                                                     (FIT_CAST(FIT_LANGUAGE, 9))
#define FIT_LANGUAGE_GREEK                                                       (FIT_CAST(FIT_LANGUAGE, 10))
#define FIT_LANGUAGE_HUNGARIAN                                                   (FIT_CAST(FIT_LANGUAGE, 11))
#define FIT_LANGUAGE_NORWEGIAN                                                   (FIT_CAST(FIT_LANGUAGE, 12))
#define FIT_LANGUAGE_POLISH                                                      (FIT_CAST(FIT_LANGUAGE, 13))
#define FIT_LANGUAGE_PORTUGUESE                                                  (FIT_CAST(FIT_LANGUAGE, 14))
#define FIT_LANGUAGE_SLOVAKIAN                                                   (FIT_CAST(FIT_LANGUAGE, 15))
#define FIT_LANGUAGE_SLOVENIAN                                                   (FIT_CAST(FIT_LANGUAGE, 16))
#define FIT_LANGUAGE_SWEDISH                                                     (FIT_CAST(FIT_LANGUAGE, 17))
#define FIT_LANGUAGE_RUSSIAN                                                     (FIT_CAST(FIT_LANGUAGE, 18))
#define FIT_LANGUAGE_TURKISH                                                     (FIT_CAST(FIT_LANGUAGE, 19))
#define FIT_LANGUAGE_LATVIAN                                                     (FIT_CAST(FIT_LANGUAGE, 20))
#define FIT_LANGUAGE_UKRAINIAN                                                   (FIT_CAST(FIT_LANGUAGE, 21))
#define FIT_LANGUAGE_ARABIC                                                      (FIT_CAST(FIT_LANGUAGE, 22))
#define FIT_LANGUAGE_FARSI                                                       (FIT_CAST(FIT_LANGUAGE, 23))
#define FIT_LANGUAGE_BULGARIAN                                                   (FIT_CAST(FIT_LANGUAGE, 24))
#define FIT_LANGUAGE_ROMANIAN                                                    (FIT_CAST(FIT_LANGUAGE, 25))
#define FIT_LANGUAGE_CHINESE                                                     (FIT_CAST(FIT_LANGUAGE, 26))
#define FIT_LANGUAGE_JAPANESE                                                    (FIT_CAST(FIT_LANGUAGE, 27))
#define FIT_LANGUAGE_KOREAN                                                      (FIT_CAST(FIT_LANGUAGE, 28))
#define FIT_LANGUAGE_TAIWANESE                                                   (FIT_CAST(FIT_LANGUAGE, 29))
#define FIT_LANGUAGE_THAI                                                        (FIT_CAST(FIT_LANGUAGE, 30))
#define FIT_LANGUAGE_HEBREW                                                      (FIT_CAST(FIT_LANGUAGE, 31))
#define FIT_LANGUAGE_BRAZILIAN_PORTUGUESE                                        (FIT_CAST(FIT_LANGUAGE, 32))
#define FIT_LANGUAGE_INDONESIAN                                                  (FIT_CAST(FIT_LANGUAGE, 33))
#define FIT_LANGUAGE_MALAYSIAN                                                   (FIT_CAST(FIT_LANGUAGE, 34))
#define FIT_LANGUAGE_VIETNAMESE                                                  (FIT_CAST(FIT_LANGUAGE, 35))
#define FIT_LANGUAGE_BURMESE                                                     (FIT_CAST(FIT_LANGUAGE, 36))
#define FIT_LANGUAGE_MONGOLIAN                                                   (FIT_CAST(FIT_LANGUAGE, 37))
#define FIT_LANGUAGE_CUSTOM                                                      (FIT_CAST(FIT_LANGUAGE, 254))
#define FIT_LANGUAGE_COUNT                                                       39

typedef FIT_UINT8Z FIT_LANGUAGE_BITS_0; // Bit field corresponding to language enum type (1 << language).
#define FIT_LANGUAGE_BITS_0_INVALID                                              FIT_UINT8Z_INVALID
#define FIT_LANGUAGE_BITS_0_ENGLISH                                              (FIT_CAST(FIT_LANGUAGE_BITS_0, 0x01))
#define FIT_LANGUAGE_BITS_0_FRENCH                                               (FIT_CAST(FIT_LANGUAGE_BITS_0, 0x02))
#define FIT_LANGUAGE_BITS_0_ITALIAN                                              (FIT_CAST(FIT_LANGUAGE_BITS_0, 0x04))
#define FIT_LANGUAGE_BITS_0_GERMAN                                               (FIT_CAST(FIT_LANGUAGE_BITS_0, 0x08))
#define FIT_LANGUAGE_BITS_0_SPANISH                                              (FIT_CAST(FIT_LANGUAGE_BITS_0, 0x10))
#define FIT_LANGUAGE_BITS_0_CROATIAN                                             (FIT_CAST(FIT_LANGUAGE_BITS_0, 0x20))
#define FIT_LANGUAGE_BITS_0_CZECH                                                (FIT_CAST(FIT_LANGUAGE_BITS_0, 0x40))
#define FIT_LANGUAGE_BITS_0_DANISH                                               (FIT_CAST(FIT_LANGUAGE_BITS_0, 0x80))
#define FIT_LANGUAGE_BITS_0_COUNT                                                8

typedef FIT_UINT8Z FIT_LANGUAGE_BITS_1;
#define FIT_LANGUAGE_BITS_1_INVALID                                              FIT_UINT8Z_INVALID
#define FIT_LANGUAGE_BITS_1_DUTCH                                                (FIT_CAST(FIT_LANGUAGE_BITS_1, 0x01))
#define FIT_LANGUAGE_BITS_1_FINNISH                                              (FIT_CAST(FIT_LANGUAGE_BITS_1, 0x02))
#define FIT_LANGUAGE_BITS_1_GREEK                                                (FIT_CAST(FIT_LANGUAGE_BITS_1, 0x04))
#define FIT_LANGUAGE_BITS_1_HUNGARIAN                                            (FIT_CAST(FIT_LANGUAGE_BITS_1, 0x08))
#define FIT_LANGUAGE_BITS_1_NORWEGIAN                                            (FIT_CAST(FIT_LANGUAGE_BITS_1, 0x10))
#define FIT_LANGUAGE_BITS_1_POLISH                                               (FIT_CAST(FIT_LANGUAGE_BITS_1, 0x20))
#define FIT_LANGUAGE_BITS_1_PORTUGUESE                                           (FIT_CAST(FIT_LANGUAGE_BITS_1, 0x40))
#define FIT_LANGUAGE_BITS_1_SLOVAKIAN                                            (FIT_CAST(FIT_LANGUAGE_BITS_1, 0x80))
#define FIT_LANGUAGE_BITS_1_COUNT                                                8

typedef FIT_UINT8Z FIT_LANGUAGE_BITS_2;
#define FIT_LANGUAGE_BITS_2_INVALID                                              FIT_UINT8Z_INVALID
#define FIT_LANGUAGE_BITS_2_SLOVENIAN                                            (FIT_CAST(FIT_LANGUAGE_BITS_2, 0x01))
#define FIT_LANGUAGE_BITS_2_SWEDISH                                              (FIT_CAST(FIT_LANGUAGE_BITS_2, 0x02))
#define FIT_LANGUAGE_BITS_2_RUSSIAN                                              (FIT_CAST(FIT_LANGUAGE_BITS_2, 0x04))
#define FIT_LANGUAGE_BITS_2_TURKISH                                              (FIT_CAST(FIT_LANGUAGE_BITS_2, 0x08))
#define FIT_LANGUAGE_BITS_2_LATVIAN                                              (FIT_CAST(FIT_LANGUAGE_BITS_2, 0x10))
#define FIT_LANGUAGE_BITS_2_UKRAINIAN                                            (FIT_CAST(FIT_LANGUAGE_BITS_2, 0x20))
#define FIT_LANGUAGE_BITS_2_ARABIC                                               (FIT_CAST(FIT_LANGUAGE_BITS_2, 0x40))
#define FIT_LANGUAGE_BITS_2_FARSI                                                (FIT_CAST(FIT_LANGUAGE_BITS_2, 0x80))
#define FIT_LANGUAGE_BITS_2_COUNT                                                8

typedef FIT_UINT8Z FIT_LANGUAGE_BITS_3;
#define FIT_LANGUAGE_BITS_3_INVALID                                              FIT_UINT8Z_INVALID
#define FIT_LANGUAGE_BITS_3_BULGARIAN                                            (FIT_CAST(FIT_LANGUAGE_BITS_3, 0x01))
#define FIT_LANGUAGE_BITS_3_ROMANIAN                                             (FIT_CAST(FIT_LANGUAGE_BITS_3, 0x02))
#define FIT_LANGUAGE_BITS_3_CHINESE                                              (FIT_CAST(FIT_LANGUAGE_BITS_3, 0x04))
#define FIT_LANGUAGE_BITS_3_JAPANESE                                             (FIT_CAST(FIT_LANGUAGE_BITS_3, 0x08))
#define FIT_LANGUAGE_BITS_3_KOREAN                                               (FIT_CAST(FIT_LANGUAGE_BITS_3, 0x10))
#define FIT_LANGUAGE_BITS_3_TAIWANESE                                            (FIT_CAST(FIT_LANGUAGE_BITS_3, 0x20))
#define FIT_LANGUAGE_BITS_3_THAI                                                 (FIT_CAST(FIT_LANGUAGE_BITS_3, 0x40))
#define FIT_LANGUAGE_BITS_3_HEBREW                                               (FIT_CAST(FIT_LANGUAGE_BITS_3, 0x80))
#define FIT_LANGUAGE_BITS_3_COUNT                                                8

typedef FIT_UINT8Z FIT_LANGUAGE_BITS_4;
#define FIT_LANGUAGE_BITS_4_INVALID                                              FIT_UINT8Z_INVALID
#define FIT_LANGUAGE_BITS_4_BRAZILIAN_PORTUGUESE                                 (FIT_CAST(FIT_LANGUAGE_BITS_4, 0x01))
#define FIT_LANGUAGE_BITS_4_INDONESIAN                                           (FIT_CAST(FIT_LANGUAGE_BITS_4, 0x02))
#define FIT_LANGUAGE_BITS_4_MALAYSIAN                                            (FIT_CAST(FIT_LANGUAGE_BITS_4, 0x04))
#define FIT_LANGUAGE_BITS_4_VIETNAMESE                                           (FIT_CAST(FIT_LANGUAGE_BITS_4, 0x08))
#define FIT_LANGUAGE_BITS_4_BURMESE                                              (FIT_CAST(FIT_LANGUAGE_BITS_4, 0x10))
#define FIT_LANGUAGE_BITS_4_MONGOLIAN                                            (FIT_CAST(FIT_LANGUAGE_BITS_4, 0x20))
#define FIT_LANGUAGE_BITS_4_COUNT                                                6

typedef FIT_ENUM FIT_TIME_ZONE;
#define FIT_TIME_ZONE_INVALID                                                    FIT_ENUM_INVALID
#define FIT_TIME_ZONE_ALMATY                                                     (FIT_CAST(FIT_TIME_ZONE, 0))
#define FIT_TIME_ZONE_BANGKOK                                                    (FIT_CAST(FIT_TIME_ZONE, 1))
#define FIT_TIME_ZONE_BOMBAY                                                     (FIT_CAST(FIT_TIME_ZONE, 2))
#define FIT_TIME_ZONE_BRASILIA                                                   (FIT_CAST(FIT_TIME_ZONE, 3))
#define FIT_TIME_ZONE_CAIRO                                                      (FIT_CAST(FIT_TIME_ZONE, 4))
#define FIT_TIME_ZONE_CAPE_VERDE_IS                                              (FIT_CAST(FIT_TIME_ZONE, 5))
#define FIT_TIME_ZONE_DARWIN                                                     (FIT_CAST(FIT_TIME_ZONE, 6))
#define FIT_TIME_ZONE_ENIWETOK                                                   (FIT_CAST(FIT_TIME_ZONE, 7))
#define FIT_TIME_ZONE_FIJI                                                       (FIT_CAST(FIT_TIME_ZONE, 8))
#define FIT_TIME_ZONE_HONG_KONG                                                  (FIT_CAST(FIT_TIME_ZONE, 9))
#define FIT_TIME_ZONE_ISLAMABAD                                                  (FIT_CAST(FIT_TIME_ZONE, 10))
#define FIT_TIME_ZONE_KABUL                                                      (FIT_CAST(FIT_TIME_ZONE, 11))
#define FIT_TIME_ZONE_MAGADAN                                                    (FIT_CAST(FIT_TIME_ZONE, 12))
#define FIT_TIME_ZONE_MID_ATLANTIC                                               (FIT_CAST(FIT_TIME_ZONE, 13))
#define FIT_TIME_ZONE_MOSCOW                                                     (FIT_CAST(FIT_TIME_ZONE, 14))
#define FIT_TIME_ZONE_MUSCAT                                                     (FIT_CAST(FIT_TIME_ZONE, 15))
#define FIT_TIME_ZONE_NEWFOUNDLAND                                               (FIT_CAST(FIT_TIME_ZONE, 16))
#define FIT_TIME_ZONE_SAMOA                                                      (FIT_CAST(FIT_TIME_ZONE, 17))
#define FIT_TIME_ZONE_SYDNEY                                                     (FIT_CAST(FIT_TIME_ZONE, 18))
#define FIT_TIME_ZONE_TEHRAN                                                     (FIT_CAST(FIT_TIME_ZONE, 19))
#define FIT_TIME_ZONE_TOKYO                                                      (FIT_CAST(FIT_TIME_ZONE, 20))
#define FIT_TIME_ZONE_US_ALASKA                                                  (FIT_CAST(FIT_TIME_ZONE, 21))
#define FIT_TIME_ZONE_US_ATLANTIC                                                (FIT_CAST(FIT_TIME_ZONE, 22))
#define FIT_TIME_ZONE_US_CENTRAL                                                 (FIT_CAST(FIT_TIME_ZONE, 23))
#define FIT_TIME_ZONE_US_EASTERN                                                 (FIT_CAST(FIT_TIME_ZONE, 24))
#define FIT_TIME_ZONE_US_HAWAII                                                  (FIT_CAST(FIT_TIME_ZONE, 25))
#define FIT_TIME_ZONE_US_MOUNTAIN                                                (FIT_CAST(FIT_TIME_ZONE, 26))
#define FIT_TIME_ZONE_US_PACIFIC                                                 (FIT_CAST(FIT_TIME_ZONE, 27))
#define FIT_TIME_ZONE_OTHER                                                      (FIT_CAST(FIT_TIME_ZONE, 28))
#define FIT_TIME_ZONE_AUCKLAND                                                   (FIT_CAST(FIT_TIME_ZONE, 29))
#define FIT_TIME_ZONE_KATHMANDU                                                  (FIT_CAST(FIT_TIME_ZONE, 30))
#define FIT_TIME_ZONE_EUROPE_WESTERN_WET                                         (FIT_CAST(FIT_TIME_ZONE, 31))
#define FIT_TIME_ZONE_EUROPE_CENTRAL_CET                                         (FIT_CAST(FIT_TIME_ZONE, 32))
#define FIT_TIME_ZONE_EUROPE_EASTERN_EET                                         (FIT_CAST(FIT_TIME_ZONE, 33))
#define FIT_TIME_ZONE_JAKARTA                                                    (FIT_CAST(FIT_TIME_ZONE, 34))
#define FIT_TIME_ZONE_PERTH                                                      (FIT_CAST(FIT_TIME_ZONE, 35))
#define FIT_TIME_ZONE_ADELAIDE                                                   (FIT_CAST(FIT_TIME_ZONE, 36))
#define FIT_TIME_ZONE_BRISBANE                                                   (FIT_CAST(FIT_TIME_ZONE, 37))
#define FIT_TIME_ZONE_TASMANIA                                                   (FIT_CAST(FIT_TIME_ZONE, 38))
#define FIT_TIME_ZONE_ICELAND                                                    (FIT_CAST(FIT_TIME_ZONE, 39))
#define FIT_TIME_ZONE_AMSTERDAM                                                  (FIT_CAST(FIT_TIME_ZONE, 40))
#define FIT_TIME_ZONE_ATHENS                                                     (FIT_CAST(FIT_TIME_ZONE, 41))
#define FIT_TIME_ZONE_BARCELONA                                                  (FIT_CAST(FIT_TIME_ZONE, 42))
#define FIT_TIME_ZONE_BERLIN                                                     (FIT_CAST(FIT_TIME_ZONE, 43))
#define FIT_TIME_ZONE_BRUSSELS                                                   (FIT_CAST(FIT_TIME_ZONE, 44))
#define FIT_TIME_ZONE_BUDAPEST                                                   (FIT_CAST(FIT_TIME_ZONE, 45))
#define FIT_TIME_ZONE_COPENHAGEN                                                 (FIT_CAST(FIT_TIME_ZONE, 46))
#define FIT_TIME_ZONE_DUBLIN                                                     (FIT_CAST(FIT_TIME_ZONE, 47))
#define FIT_TIME_ZONE_HELSINKI                                                   (FIT_CAST(FIT_TIME_ZONE, 48))
#define FIT_TIME_ZONE_LISBON                                                     (FIT_CAST(FIT_TIME_ZONE, 49))
#define FIT_TIME_ZONE_LONDON                                                     (FIT_CAST(FIT_TIME_ZONE, 50))
#define FIT_TIME_ZONE_MADRID                                                     (FIT_CAST(FIT_TIME_ZONE, 51))
#define FIT_TIME_ZONE_MUNICH                                                     (FIT_CAST(FIT_TIME_ZONE, 52))
#define FIT_TIME_ZONE_OSLO                                                       (FIT_CAST(FIT_TIME_ZONE, 53))
#define FIT_TIME_ZONE_PARIS                                                      (FIT_CAST(FIT_TIME_ZONE, 54))
#define FIT_TIME_ZONE_PRAGUE                                                     (FIT_CAST(FIT_TIME_ZONE, 55))
#define FIT_TIME_ZONE_REYKJAVIK                                                  (FIT_CAST(FIT_TIME_ZONE, 56))
#define FIT_TIME_ZONE_ROME                                                       (FIT_CAST(FIT_TIME_ZONE, 57))
#define FIT_TIME_ZONE_STOCKHOLM                                                  (FIT_CAST(FIT_TIME_ZONE, 58))
#define FIT_TIME_ZONE_VIENNA                                                     (FIT_CAST(FIT_TIME_ZONE, 59))
#define FIT_TIME_ZONE_WARSAW                                                     (FIT_CAST(FIT_TIME_ZONE, 60))
#define FIT_TIME_ZONE_ZURICH                                                     (FIT_CAST(FIT_TIME_ZONE, 61))
#define FIT_TIME_ZONE_QUEBEC                                                     (FIT_CAST(FIT_TIME_ZONE, 62))
#define FIT_TIME_ZONE_ONTARIO                                                    (FIT_CAST(FIT_TIME_ZONE, 63))
#define FIT_TIME_ZONE_MANITOBA                                                   (FIT_CAST(FIT_TIME_ZONE, 64))
#define FIT_TIME_ZONE_SASKATCHEWAN                                               (FIT_CAST(FIT_TIME_ZONE, 65))
#define FIT_TIME_ZONE_ALBERTA                                                    (FIT_CAST(FIT_TIME_ZONE, 66))
#define FIT_TIME_ZONE_BRITISH_COLUMBIA                                           (FIT_CAST(FIT_TIME_ZONE, 67))
#define FIT_TIME_ZONE_BOISE                                                      (FIT_CAST(FIT_TIME_ZONE, 68))
#define FIT_TIME_ZONE_BOSTON                                                     (FIT_CAST(FIT_TIME_ZONE, 69))
#define FIT_TIME_ZONE_CHICAGO                                                    (FIT_CAST(FIT_TIME_ZONE, 70))
#define FIT_TIME_ZONE_DALLAS                                                     (FIT_CAST(FIT_TIME_ZONE, 71))
#define FIT_TIME_ZONE_DENVER                                                     (FIT_CAST(FIT_TIME_ZONE, 72))
#define FIT_TIME_ZONE_KANSAS_CITY                                                (FIT_CAST(FIT_TIME_ZONE, 73))
#define FIT_TIME_ZONE_LAS_VEGAS                                                  (FIT_CAST(FIT_TIME_ZONE, 74))
#define FIT_TIME_ZONE_LOS_ANGELES                                                (FIT_CAST(FIT_TIME_ZONE, 75))
#define FIT_TIME_ZONE_MIAMI                                                      (FIT_CAST(FIT_TIME_ZONE, 76))
#define FIT_TIME_ZONE_MINNEAPOLIS                                                (FIT_CAST(FIT_TIME_ZONE, 77))
#define FIT_TIME_ZONE_NEW_YORK                                                   (FIT_CAST(FIT_TIME_ZONE, 78))
#define FIT_TIME_ZONE_NEW_ORLEANS                                                (FIT_CAST(FIT_TIME_ZONE, 79))
#define FIT_TIME_ZONE_PHOENIX                                                    (FIT_CAST(FIT_TIME_ZONE, 80))
#define FIT_TIME_ZONE_SANTA_FE                                                   (FIT_CAST(FIT_TIME_ZONE, 81))
#define FIT_TIME_ZONE_SEATTLE                                                    (FIT_CAST(FIT_TIME_ZONE, 82))
#define FIT_TIME_ZONE_WASHINGTON_DC                                              (FIT_CAST(FIT_TIME_ZONE, 83))
#define FIT_TIME_ZONE_US_ARIZONA                                                 (FIT_CAST(FIT_TIME_ZONE, 84))
#define FIT_TIME_ZONE_CHITA                                                      (FIT_CAST(FIT_TIME_ZONE, 85))
#define FIT_TIME_ZONE_EKATERINBURG                                               (FIT_CAST(FIT_TIME_ZONE, 86))
#define FIT_TIME_ZONE_IRKUTSK                                                    (FIT_CAST(FIT_TIME_ZONE, 87))
#define FIT_TIME_ZONE_KALININGRAD                                                (FIT_CAST(FIT_TIME_ZONE, 88))
#define FIT_TIME_ZONE_KRASNOYARSK                                                (FIT_CAST(FIT_TIME_ZONE, 89))
#define FIT_TIME_ZONE_NOVOSIBIRSK                                                (FIT_CAST(FIT_TIME_ZONE, 90))
#define FIT_TIME_ZONE_PETROPAVLOVSK_KAMCHATSKIY                                  (FIT_CAST(FIT_TIME_ZONE, 91))
#define FIT_TIME_ZONE_SAMARA                                                     (FIT_CAST(FIT_TIME_ZONE, 92))
#define FIT_TIME_ZONE_VLADIVOSTOK                                                (FIT_CAST(FIT_TIME_ZONE, 93))
#define FIT_TIME_ZONE_MEXICO_CENTRAL                                             (FIT_CAST(FIT_TIME_ZONE, 94))
#define FIT_TIME_ZONE_MEXICO_MOUNTAIN                                            (FIT_CAST(FIT_TIME_ZONE, 95))
#define FIT_TIME_ZONE_MEXICO_PACIFIC                                             (FIT_CAST(FIT_TIME_ZONE, 96))
#define FIT_TIME_ZONE_CAPE_TOWN                                                  (FIT_CAST(FIT_TIME_ZONE, 97))
#define FIT_TIME_ZONE_WINKHOEK                                                   (FIT_CAST(FIT_TIME_ZONE, 98))
#define FIT_TIME_ZONE_LAGOS                                                      (FIT_CAST(FIT_TIME_ZONE, 99))
#define FIT_TIME_ZONE_RIYAHD                                                     (FIT_CAST(FIT_TIME_ZONE, 100))
#define FIT_TIME_ZONE_VENEZUELA                                                  (FIT_CAST(FIT_TIME_ZONE, 101))
#define FIT_TIME_ZONE_AUSTRALIA_LH                                               (FIT_CAST(FIT_TIME_ZONE, 102))
#define FIT_TIME_ZONE_SANTIAGO                                                   (FIT_CAST(FIT_TIME_ZONE, 103))
#define FIT_TIME_ZONE_MANUAL                                                     (FIT_CAST(FIT_TIME_ZONE, 253))
#define FIT_TIME_ZONE_AUTOMATIC                                                  (FIT_CAST(FIT_TIME_ZONE, 254))
#define FIT_TIME_ZONE_COUNT                                                      106

typedef FIT_ENUM FIT_DISPLAY_MEASURE;
#define FIT_DISPLAY_MEASURE_INVALID                                              FIT_ENUM_INVALID
#define FIT_DISPLAY_MEASURE_METRIC                                               (FIT_CAST(FIT_DISPLAY_MEASURE, 0))
#define FIT_DISPLAY_MEASURE_STATUTE                                              (FIT_CAST(FIT_DISPLAY_MEASURE, 1))
#define FIT_DISPLAY_MEASURE_NAUTICAL                                             (FIT_CAST(FIT_DISPLAY_MEASURE, 2))
#define FIT_DISPLAY_MEASURE_COUNT                                                3

typedef FIT_ENUM FIT_DISPLAY_HEART;
#define FIT_DISPLAY_HEART_INVALID                                                FIT_ENUM_INVALID
#define FIT_DISPLAY_HEART_BPM                                                    (FIT_CAST(FIT_DISPLAY_HEART, 0))
#define FIT_DISPLAY_HEART_MAX                                                    (FIT_CAST(FIT_DISPLAY_HEART, 1))
#define FIT_DISPLAY_HEART_RESERVE                                                (FIT_CAST(FIT_DISPLAY_HEART, 2))
#define FIT_DISPLAY_HEART_COUNT                                                  3

typedef FIT_ENUM FIT_DISPLAY_POWER;
#define FIT_DISPLAY_POWER_INVALID                                                FIT_ENUM_INVALID
#define FIT_DISPLAY_POWER_WATTS                                                  (FIT_CAST(FIT_DISPLAY_POWER, 0))
#define FIT_DISPLAY_POWER_PERCENT_FTP                                            (FIT_CAST(FIT_DISPLAY_POWER, 1))
#define FIT_DISPLAY_POWER_COUNT                                                  2

typedef FIT_ENUM FIT_DISPLAY_POSITION;
#define FIT_DISPLAY_POSITION_INVALID                                             FIT_ENUM_INVALID
#define FIT_DISPLAY_POSITION_DEGREE                                              (FIT_CAST(FIT_DISPLAY_POSITION, 0)) // dd.dddddd
#define FIT_DISPLAY_POSITION_DEGREE_MINUTE                                       (FIT_CAST(FIT_DISPLAY_POSITION, 1)) // dddmm.mmm
#define FIT_DISPLAY_POSITION_DEGREE_MINUTE_SECOND                                (FIT_CAST(FIT_DISPLAY_POSITION, 2)) // dddmmss
#define FIT_DISPLAY_POSITION_AUSTRIAN_GRID                                       (FIT_CAST(FIT_DISPLAY_POSITION, 3)) // Austrian Grid (BMN)
#define FIT_DISPLAY_POSITION_BRITISH_GRID                                        (FIT_CAST(FIT_DISPLAY_POSITION, 4)) // British National Grid
#define FIT_DISPLAY_POSITION_DUTCH_GRID                                          (FIT_CAST(FIT_DISPLAY_POSITION, 5)) // Dutch grid system
#define FIT_DISPLAY_POSITION_HUNGARIAN_GRID                                      (FIT_CAST(FIT_DISPLAY_POSITION, 6)) // Hungarian grid system
#define FIT_DISPLAY_POSITION_FINNISH_GRID                                        (FIT_CAST(FIT_DISPLAY_POSITION, 7)) // Finnish grid system Zone3 KKJ27
#define FIT_DISPLAY_POSITION_GERMAN_GRID                                         (FIT_CAST(FIT_DISPLAY_POSITION, 8)) // Gausss Krueger (German)
#define FIT_DISPLAY_POSITION_ICELANDIC_GRID                                      (FIT_CAST(FIT_DISPLAY_POSITION, 9)) // Icelandic Grid
#define FIT_DISPLAY_POSITION_INDONESIAN_EQUATORIAL                               (FIT_CAST(FIT_DISPLAY_POSITION, 10)) // Indonesian Equatorial LCO
#define FIT_DISPLAY_POSITION_INDONESIAN_IRIAN                                    (FIT_CAST(FIT_DISPLAY_POSITION, 11)) // Indonesian Irian LCO
#define FIT_DISPLAY_POSITION_INDONESIAN_SOUTHERN                                 (FIT_CAST(FIT_DISPLAY_POSITION, 12)) // Indonesian Southern LCO
#define FIT_DISPLAY_POSITION_INDIA_ZONE_0                                        (FIT_CAST(FIT_DISPLAY_POSITION, 13)) // India zone 0
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IA                                       (FIT_CAST(FIT_DISPLAY_POSITION, 14)) // India zone IA
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IB                                       (FIT_CAST(FIT_DISPLAY_POSITION, 15)) // India zone IB
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIA                                      (FIT_CAST(FIT_DISPLAY_POSITION, 16)) // India zone IIA
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIB                                      (FIT_CAST(FIT_DISPLAY_POSITION, 17)) // India zone IIB
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIIA                                     (FIT_CAST(FIT_DISPLAY_POSITION, 18)) // India zone IIIA
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIIB                                     (FIT_CAST(FIT_DISPLAY_POSITION, 19)) // India zone IIIB
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IVA                                      (FIT_CAST(FIT_DISPLAY_POSITION, 20)) // India zone IVA
#define FIT_DISPLAY_POSITION_INDIA_ZONE_IVB                                      (FIT_CAST(FIT_DISPLAY_POSITION, 21)) // India zone IVB
#define FIT_DISPLAY_POSITION_IRISH_TRANSVERSE                                    (FIT_CAST(FIT_DISPLAY_POSITION, 22)) // Irish Transverse Mercator
#define FIT_DISPLAY_POSITION_IRISH_GRID                                          (FIT_CAST(FIT_DISPLAY_POSITION, 23)) // Irish Grid
#define FIT_DISPLAY_POSITION_LORAN                                               (FIT_CAST(FIT_DISPLAY_POSITION, 24)) // Loran TD
#define FIT_DISPLAY_POSITION_MAIDENHEAD_GRID                                     (FIT_CAST(FIT_DISPLAY_POSITION, 25)) // Maidenhead grid system
#define FIT_DISPLAY_POSITION_MGRS_GRID                                           (FIT_CAST(FIT_DISPLAY_POSITION, 26)) // MGRS grid system
#define FIT_DISPLAY_POSITION_NEW_ZEALAND_GRID                                    (FIT_CAST(FIT_DISPLAY_POSITION, 27)) // New Zealand grid system
#define FIT_DISPLAY_POSITION_NEW_ZEALAND_TRANSVERSE                              (FIT_CAST(FIT_DISPLAY_POSITION, 28)) // New Zealand Transverse Mercator
#define FIT_DISPLAY_POSITION_QATAR_GRID                                          (FIT_CAST(FIT_DISPLAY_POSITION, 29)) // Qatar National Grid
#define FIT_DISPLAY_POSITION_MODIFIED_SWEDISH_GRID                               (FIT_CAST(FIT_DISPLAY_POSITION, 30)) // Modified RT-90 (Sweden)
#define FIT_DISPLAY_POSITION_SWEDISH_GRID                                        (FIT_CAST(FIT_DISPLAY_POSITION, 31)) // RT-90 (Sweden)
#define FIT_DISPLAY_POSITION_SOUTH_AFRICAN_GRID                                  (FIT_CAST(FIT_DISPLAY_POSITION, 32)) // South African Grid
#define FIT_DISPLAY_POSITION_SWISS_GRID                                          (FIT_CAST(FIT_DISPLAY_POSITION, 33)) // Swiss CH-1903 grid
#define FIT_DISPLAY_POSITION_TAIWAN_GRID                                         (FIT_CAST(FIT_DISPLAY_POSITION, 34)) // Taiwan Grid
#define FIT_DISPLAY_POSITION_UNITED_STATES_GRID                                  (FIT_CAST(FIT_DISPLAY_POSITION, 35)) // United States National Grid
#define FIT_DISPLAY_POSITION_UTM_UPS_GRID                                        (FIT_CAST(FIT_DISPLAY_POSITION, 36)) // UTM/UPS grid system
#define FIT_DISPLAY_POSITION_WEST_MALAYAN                                        (FIT_CAST(FIT_DISPLAY_POSITION, 37)) // West Malayan RSO
#define FIT_DISPLAY_POSITION_BORNEO_RSO                                          (FIT_CAST(FIT_DISPLAY_POSITION, 38)) // Borneo RSO
#define FIT_DISPLAY_POSITION_ESTONIAN_GRID                                       (FIT_CAST(FIT_DISPLAY_POSITION, 39)) // Estonian grid system
#define FIT_DISPLAY_POSITION_LATVIAN_GRID                                        (FIT_CAST(FIT_DISPLAY_POSITION, 40)) // Latvian Transverse Mercator
#define FIT_DISPLAY_POSITION_SWEDISH_REF_99_GRID                                 (FIT_CAST(FIT_DISPLAY_POSITION, 41)) // Reference Grid 99 TM (Swedish)
#define FIT_DISPLAY_POSITION_COUNT                                               42

typedef FIT_ENUM FIT_SWITCH;
#define FIT_SWITCH_INVALID                                                       FIT_ENUM_INVALID
#define FIT_SWITCH_OFF                                                           (FIT_CAST(FIT_SWITCH, 0))
#define FIT_SWITCH_ON                                                            (FIT_CAST(FIT_SWITCH, 1))
#define FIT_SWITCH_AUTO                                                          (FIT_CAST(FIT_SWITCH, 2))
#define FIT_SWITCH_COUNT                                                         3

typedef FIT_ENUM FIT_SPORT;
#define FIT_SPORT_INVALID                                                        FIT_ENUM_INVALID
#define FIT_SPORT_GENERIC                                                        (FIT_CAST(FIT_SPORT, 0))
#define FIT_SPORT_RUNNING                                                        (FIT_CAST(FIT_SPORT, 1))
#define FIT_SPORT_CYCLING                                                        (FIT_CAST(FIT_SPORT, 2))
#define FIT_SPORT_TRANSITION                                                     (FIT_CAST(FIT_SPORT, 3)) // Mulitsport transition
#define FIT_SPORT_FITNESS_EQUIPMENT                                              (FIT_CAST(FIT_SPORT, 4))
#define FIT_SPORT_SWIMMING                                                       (FIT_CAST(FIT_SPORT, 5))
#define FIT_SPORT_BASKETBALL                                                     (FIT_CAST(FIT_SPORT, 6))
#define FIT_SPORT_SOCCER                                                         (FIT_CAST(FIT_SPORT, 7))
#define FIT_SPORT_TENNIS                                                         (FIT_CAST(FIT_SPORT, 8))
#define FIT_SPORT_AMERICAN_FOOTBALL                                              (FIT_CAST(FIT_SPORT, 9))
#define FIT_SPORT_TRAINING                                                       (FIT_CAST(FIT_SPORT, 10))
#define FIT_SPORT_WALKING                                                        (FIT_CAST(FIT_SPORT, 11))
#define FIT_SPORT_CROSS_COUNTRY_SKIING                                           (FIT_CAST(FIT_SPORT, 12))
#define FIT_SPORT_ALPINE_SKIING                                                  (FIT_CAST(FIT_SPORT, 13))
#define FIT_SPORT_SNOWBOARDING                                                   (FIT_CAST(FIT_SPORT, 14))
#define FIT_SPORT_ROWING                                                         (FIT_CAST(FIT_SPORT, 15))
#define FIT_SPORT_MOUNTAINEERING                                                 (FIT_CAST(FIT_SPORT, 16))
#define FIT_SPORT_HIKING                                                         (FIT_CAST(FIT_SPORT, 17))
#define FIT_SPORT_MULTISPORT                                                     (FIT_CAST(FIT_SPORT, 18))
#define FIT_SPORT_PADDLING                                                       (FIT_CAST(FIT_SPORT, 19))
#define FIT_SPORT_FLYING                                                         (FIT_CAST(FIT_SPORT, 20))
#define FIT_SPORT_E_BIKING                                                       (FIT_CAST(FIT_SPORT, 21))
#define FIT_SPORT_MOTORCYCLING                                                   (FIT_CAST(FIT_SPORT, 22))
#define FIT_SPORT_BOATING                                                        (FIT_CAST(FIT_SPORT, 23))
#define FIT_SPORT_DRIVING                                                        (FIT_CAST(FIT_SPORT, 24))
#define FIT_SPORT_GOLF                                                           (FIT_CAST(FIT_SPORT, 25))
#define FIT_SPORT_HANG_GLIDING                                                   (FIT_CAST(FIT_SPORT, 26))
#define FIT_SPORT_HORSEBACK_RIDING                                               (FIT_CAST(FIT_SPORT, 27))
#define FIT_SPORT_HUNTING                                                        (FIT_CAST(FIT_SPORT, 28))
#define FIT_SPORT_FISHING                                                        (FIT_CAST(FIT_SPORT, 29))
#define FIT_SPORT_INLINE_SKATING                                                 (FIT_CAST(FIT_SPORT, 30))
#define FIT_SPORT_ROCK_CLIMBING                                                  (FIT_CAST(FIT_SPORT, 31))
#define FIT_SPORT_SAILING                                                        (FIT_CAST(FIT_SPORT, 32))
#define FIT_SPORT_ICE_SKATING                                                    (FIT_CAST(FIT_SPORT, 33))
#define FIT_SPORT_SKY_DIVING                                                     (FIT_CAST(FIT_SPORT, 34))
#define FIT_SPORT_SNOWSHOEING                                                    (FIT_CAST(FIT_SPORT, 35))
#define FIT_SPORT_SNOWMOBILING                                                   (FIT_CAST(FIT_SPORT, 36))
#define FIT_SPORT_STAND_UP_PADDLEBOARDING                                        (FIT_CAST(FIT_SPORT, 37))
#define FIT_SPORT_SURFING                                                        (FIT_CAST(FIT_SPORT, 38))
#define FIT_SPORT_WAKEBOARDING                                                   (FIT_CAST(FIT_SPORT, 39))
#define FIT_SPORT_WATER_SKIING                                                   (FIT_CAST(FIT_SPORT, 40))
#define FIT_SPORT_KAYAKING                                                       (FIT_CAST(FIT_SPORT, 41))
#define FIT_SPORT_RAFTING                                                        (FIT_CAST(FIT_SPORT, 42))
#define FIT_SPORT_WINDSURFING                                                    (FIT_CAST(FIT_SPORT, 43))
#define FIT_SPORT_KITESURFING                                                    (FIT_CAST(FIT_SPORT, 44))
#define FIT_SPORT_TACTICAL                                                       (FIT_CAST(FIT_SPORT, 45))
#define FIT_SPORT_JUMPMASTER                                                     (FIT_CAST(FIT_SPORT, 46))
#define FIT_SPORT_BOXING                                                         (FIT_CAST(FIT_SPORT, 47))
#define FIT_SPORT_FLOOR_CLIMBING                                                 (FIT_CAST(FIT_SPORT, 48))
#define FIT_SPORT_BASEBALL                                                       (FIT_CAST(FIT_SPORT, 49))
#define FIT_SPORT_DIVING                                                         (FIT_CAST(FIT_SPORT, 53))
#define FIT_SPORT_HIIT                                                           (FIT_CAST(FIT_SPORT, 62))
#define FIT_SPORT_RACKET                                                         (FIT_CAST(FIT_SPORT, 64))
#define FIT_SPORT_WHEELCHAIR_PUSH_WALK                                           (FIT_CAST(FIT_SPORT, 65))
#define FIT_SPORT_WHEELCHAIR_PUSH_RUN                                            (FIT_CAST(FIT_SPORT, 66))
#define FIT_SPORT_MEDITATION                                                     (FIT_CAST(FIT_SPORT, 67))
#define FIT_SPORT_DISC_GOLF                                                      (FIT_CAST(FIT_SPORT, 69))
#define FIT_SPORT_CRICKET                                                        (FIT_CAST(FIT_SPORT, 71))
#define FIT_SPORT_RUGBY                                                          (FIT_CAST(FIT_SPORT, 72))
#define FIT_SPORT_HOCKEY                                                         (FIT_CAST(FIT_SPORT, 73))
#define FIT_SPORT_LACROSSE                                                       (FIT_CAST(FIT_SPORT, 74))
#define FIT_SPORT_VOLLEYBALL                                                     (FIT_CAST(FIT_SPORT, 75))
#define FIT_SPORT_WATER_TUBING                                                   (FIT_CAST(FIT_SPORT, 76))
#define FIT_SPORT_WAKESURFING                                                    (FIT_CAST(FIT_SPORT, 77))
#define FIT_SPORT_MIXED_MARTIAL_ARTS                                             (FIT_CAST(FIT_SPORT, 80))
#define FIT_SPORT_SNORKELING                                                     (FIT_CAST(FIT_SPORT, 82))
#define FIT_SPORT_DANCE                                                          (FIT_CAST(FIT_SPORT, 83))
#define FIT_SPORT_JUMP_ROPE                                                      (FIT_CAST(FIT_SPORT, 84))
#define FIT_SPORT_ALL                                                            (FIT_CAST(FIT_SPORT, 254)) // All is for goals only to include all sports.
#define FIT_SPORT_COUNT                                                          69

typedef FIT_UINT8Z FIT_SPORT_BITS_0; // Bit field corresponding to sport enum type (1 << sport).
#define FIT_SPORT_BITS_0_INVALID                                                 FIT_UINT8Z_INVALID
#define FIT_SPORT_BITS_0_GENERIC                                                 (FIT_CAST(FIT_SPORT_BITS_0, 0x01))
#define FIT_SPORT_BITS_0_RUNNING                                                 (FIT_CAST(FIT_SPORT_BITS_0, 0x02))
#define FIT_SPORT_BITS_0_CYCLING                                                 (FIT_CAST(FIT_SPORT_BITS_0, 0x04))
#define FIT_SPORT_BITS_0_TRANSITION                                              (FIT_CAST(FIT_SPORT_BITS_0, 0x08)) // Mulitsport transition
#define FIT_SPORT_BITS_0_FITNESS_EQUIPMENT                                       (FIT_CAST(FIT_SPORT_BITS_0, 0x10))
#define FIT_SPORT_BITS_0_SWIMMING                                                (FIT_CAST(FIT_SPORT_BITS_0, 0x20))
#define FIT_SPORT_BITS_0_BASKETBALL                                              (FIT_CAST(FIT_SPORT_BITS_0, 0x40))
#define FIT_SPORT_BITS_0_SOCCER                                                  (FIT_CAST(FIT_SPORT_BITS_0, 0x80))
#define FIT_SPORT_BITS_0_COUNT                                                   8

typedef FIT_UINT8Z FIT_SPORT_BITS_1; // Bit field corresponding to sport enum type (1 << (sport-8)).
#define FIT_SPORT_BITS_1_INVALID                                                 FIT_UINT8Z_INVALID
#define FIT_SPORT_BITS_1_TENNIS                                                  (FIT_CAST(FIT_SPORT_BITS_1, 0x01))
#define FIT_SPORT_BITS_1_AMERICAN_FOOTBALL                                       (FIT_CAST(FIT_SPORT_BITS_1, 0x02))
#define FIT_SPORT_BITS_1_TRAINING                                                (FIT_CAST(FIT_SPORT_BITS_1, 0x04))
#define FIT_SPORT_BITS_1_WALKING                                                 (FIT_CAST(FIT_SPORT_BITS_1, 0x08))
#define FIT_SPORT_BITS_1_CROSS_COUNTRY_SKIING                                    (FIT_CAST(FIT_SPORT_BITS_1, 0x10))
#define FIT_SPORT_BITS_1_ALPINE_SKIING                                           (FIT_CAST(FIT_SPORT_BITS_1, 0x20))
#define FIT_SPORT_BITS_1_SNOWBOARDING                                            (FIT_CAST(FIT_SPORT_BITS_1, 0x40))
#define FIT_SPORT_BITS_1_ROWING                                                  (FIT_CAST(FIT_SPORT_BITS_1, 0x80))
#define FIT_SPORT_BITS_1_COUNT                                                   8

typedef FIT_UINT8Z FIT_SPORT_BITS_2; // Bit field corresponding to sport enum type (1 << (sport-16)).
#define FIT_SPORT_BITS_2_INVALID                                                 FIT_UINT8Z_INVALID
#define FIT_SPORT_BITS_2_MOUNTAINEERING                                          (FIT_CAST(FIT_SPORT_BITS_2, 0x01))
#define FIT_SPORT_BITS_2_HIKING                                                  (FIT_CAST(FIT_SPORT_BITS_2, 0x02))
#define FIT_SPORT_BITS_2_MULTISPORT                                              (FIT_CAST(FIT_SPORT_BITS_2, 0x04))
#define FIT_SPORT_BITS_2_PADDLING                                                (FIT_CAST(FIT_SPORT_BITS_2, 0x08))
#define FIT_SPORT_BITS_2_FLYING                                                  (FIT_CAST(FIT_SPORT_BITS_2, 0x10))
#define FIT_SPORT_BITS_2_E_BIKING                                                (FIT_CAST(FIT_SPORT_BITS_2, 0x20))
#define FIT_SPORT_BITS_2_MOTORCYCLING                                            (FIT_CAST(FIT_SPORT_BITS_2, 0x40))
#define FIT_SPORT_BITS_2_BOATING                                                 (FIT_CAST(FIT_SPORT_BITS_2, 0x80))
#define FIT_SPORT_BITS_2_COUNT                                                   8

typedef FIT_UINT8Z FIT_SPORT_BITS_3; // Bit field corresponding to sport enum type (1 << (sport-24)).
#define FIT_SPORT_BITS_3_INVALID                                                 FIT_UINT8Z_INVALID
#define FIT_SPORT_BITS_3_DRIVING                                                 (FIT_CAST(FIT_SPORT_BITS_3, 0x01))
#define FIT_SPORT_BITS_3_GOLF                                                    (FIT_CAST(FIT_SPORT_BITS_3, 0x02))
#define FIT_SPORT_BITS_3_HANG_GLIDING                                            (FIT_CAST(FIT_SPORT_BITS_3, 0x04))
#define FIT_SPORT_BITS_3_HORSEBACK_RIDING                                        (FIT_CAST(FIT_SPORT_BITS_3, 0x08))
#define FIT_SPORT_BITS_3_HUNTING                                                 (FIT_CAST(FIT_SPORT_BITS_3, 0x10))
#define FIT_SPORT_BITS_3_FISHING                                                 (FIT_CAST(FIT_SPORT_BITS_3, 0x20))
#define FIT_SPORT_BITS_3_INLINE_SKATING                                          (FIT_CAST(FIT_SPORT_BITS_3, 0x40))
#define FIT_SPORT_BITS_3_ROCK_CLIMBING                                           (FIT_CAST(FIT_SPORT_BITS_3, 0x80))
#define FIT_SPORT_BITS_3_COUNT                                                   8

typedef FIT_UINT8Z FIT_SPORT_BITS_4; // Bit field corresponding to sport enum type (1 << (sport-32)).
#define FIT_SPORT_BITS_4_INVALID                                                 FIT_UINT8Z_INVALID
#define FIT_SPORT_BITS_4_SAILING                                                 (FIT_CAST(FIT_SPORT_BITS_4, 0x01))
#define FIT_SPORT_BITS_4_ICE_SKATING                                             (FIT_CAST(FIT_SPORT_BITS_4, 0x02))
#define FIT_SPORT_BITS_4_SKY_DIVING                                              (FIT_CAST(FIT_SPORT_BITS_4, 0x04))
#define FIT_SPORT_BITS_4_SNOWSHOEING                                             (FIT_CAST(FIT_SPORT_BITS_4, 0x08))
#define FIT_SPORT_BITS_4_SNOWMOBILING                                            (FIT_CAST(FIT_SPORT_BITS_4, 0x10))
#define FIT_SPORT_BITS_4_STAND_UP_PADDLEBOARDING                                 (FIT_CAST(FIT_SPORT_BITS_4, 0x20))
#define FIT_SPORT_BITS_4_SURFING                                                 (FIT_CAST(FIT_SPORT_BITS_4, 0x40))
#define FIT_SPORT_BITS_4_WAKEBOARDING                                            (FIT_CAST(FIT_SPORT_BITS_4, 0x80))
#define FIT_SPORT_BITS_4_COUNT                                                   8

typedef FIT_UINT8Z FIT_SPORT_BITS_5; // Bit field corresponding to sport enum type (1 << (sport-40)).
#define FIT_SPORT_BITS_5_INVALID                                                 FIT_UINT8Z_INVALID
#define FIT_SPORT_BITS_5_WATER_SKIING                                            (FIT_CAST(FIT_SPORT_BITS_5, 0x01))
#define FIT_SPORT_BITS_5_KAYAKING                                                (FIT_CAST(FIT_SPORT_BITS_5, 0x02))
#define FIT_SPORT_BITS_5_RAFTING                                                 (FIT_CAST(FIT_SPORT_BITS_5, 0x04))
#define FIT_SPORT_BITS_5_WINDSURFING                                             (FIT_CAST(FIT_SPORT_BITS_5, 0x08))
#define FIT_SPORT_BITS_5_KITESURFING                                             (FIT_CAST(FIT_SPORT_BITS_5, 0x10))
#define FIT_SPORT_BITS_5_TACTICAL                                                (FIT_CAST(FIT_SPORT_BITS_5, 0x20))
#define FIT_SPORT_BITS_5_JUMPMASTER                                              (FIT_CAST(FIT_SPORT_BITS_5, 0x40))
#define FIT_SPORT_BITS_5_BOXING                                                  (FIT_CAST(FIT_SPORT_BITS_5, 0x80))
#define FIT_SPORT_BITS_5_COUNT                                                   8

typedef FIT_UINT8Z FIT_SPORT_BITS_6; // Bit field corresponding to sport enum type (1 << (sport-48)).
#define FIT_SPORT_BITS_6_INVALID                                                 FIT_UINT8Z_INVALID
#define FIT_SPORT_BITS_6_FLOOR_CLIMBING                                          (FIT_CAST(FIT_SPORT_BITS_6, 0x01))
#define FIT_SPORT_BITS_6_COUNT                                                   1

typedef FIT_ENUM FIT_SUB_SPORT;
#define FIT_SUB_SPORT_INVALID                                                    FIT_ENUM_INVALID
#define FIT_SUB_SPORT_GENERIC                                                    (FIT_CAST(FIT_SUB_SPORT, 0))
#define FIT_SUB_SPORT_TREADMILL                                                  (FIT_CAST(FIT_SUB_SPORT, 1)) // Run/Fitness Equipment
#define FIT_SUB_SPORT_STREET                                                     (FIT_CAST(FIT_SUB_SPORT, 2)) // Run
#define FIT_SUB_SPORT_TRAIL                                                      (FIT_CAST(FIT_SUB_SPORT, 3)) // Run
#define FIT_SUB_SPORT_TRACK                                                      (FIT_CAST(FIT_SUB_SPORT, 4)) // Run
#define FIT_SUB_SPORT_SPIN                                                       (FIT_CAST(FIT_SUB_SPORT, 5)) // Cycling
#define FIT_SUB_SPORT_INDOOR_CYCLING                                             (FIT_CAST(FIT_SUB_SPORT, 6)) // Cycling/Fitness Equipment
#define FIT_SUB_SPORT_ROAD                                                       (FIT_CAST(FIT_SUB_SPORT, 7)) // Cycling
#define FIT_SUB_SPORT_MOUNTAIN                                                   (FIT_CAST(FIT_SUB_SPORT, 8)) // Cycling
#define FIT_SUB_SPORT_DOWNHILL                                                   (FIT_CAST(FIT_SUB_SPORT, 9)) // Cycling
#define FIT_SUB_SPORT_RECUMBENT                                                  (FIT_CAST(FIT_SUB_SPORT, 10)) // Cycling
#define FIT_SUB_SPORT_CYCLOCROSS                                                 (FIT_CAST(FIT_SUB_SPORT, 11)) // Cycling
#define FIT_SUB_SPORT_HAND_CYCLING                                               (FIT_CAST(FIT_SUB_SPORT, 12)) // Cycling
#define FIT_SUB_SPORT_TRACK_CYCLING                                              (FIT_CAST(FIT_SUB_SPORT, 13)) // Cycling
#define FIT_SUB_SPORT_INDOOR_ROWING                                              (FIT_CAST(FIT_SUB_SPORT, 14)) // Fitness Equipment
#define FIT_SUB_SPORT_ELLIPTICAL                                                 (FIT_CAST(FIT_SUB_SPORT, 15)) // Fitness Equipment
#define FIT_SUB_SPORT_STAIR_CLIMBING                                             (FIT_CAST(FIT_SUB_SPORT, 16)) // Fitness Equipment
#define FIT_SUB_SPORT_LAP_SWIMMING                                               (FIT_CAST(FIT_SUB_SPORT, 17)) // Swimming
#define FIT_SUB_SPORT_OPEN_WATER                                                 (FIT_CAST(FIT_SUB_SPORT, 18)) // Swimming
#define FIT_SUB_SPORT_FLEXIBILITY_TRAINING                                       (FIT_CAST(FIT_SUB_SPORT, 19)) // Training
#define FIT_SUB_SPORT_STRENGTH_TRAINING                                          (FIT_CAST(FIT_SUB_SPORT, 20)) // Training
#define FIT_SUB_SPORT_WARM_UP                                                    (FIT_CAST(FIT_SUB_SPORT, 21)) // Tennis
#define FIT_SUB_SPORT_MATCH                                                      (FIT_CAST(FIT_SUB_SPORT, 22)) // Tennis
#define FIT_SUB_SPORT_EXERCISE                                                   (FIT_CAST(FIT_SUB_SPORT, 23)) // Tennis
#define FIT_SUB_SPORT_CHALLENGE                                                  (FIT_CAST(FIT_SUB_SPORT, 24))
#define FIT_SUB_SPORT_INDOOR_SKIING                                              (FIT_CAST(FIT_SUB_SPORT, 25)) // Fitness Equipment
#define FIT_SUB_SPORT_CARDIO_TRAINING                                            (FIT_CAST(FIT_SUB_SPORT, 26)) // Training
#define FIT_SUB_SPORT_INDOOR_WALKING                                             (FIT_CAST(FIT_SUB_SPORT, 27)) // Walking/Fitness Equipment
#define FIT_SUB_SPORT_E_BIKE_FITNESS                                             (FIT_CAST(FIT_SUB_SPORT, 28)) // E-Biking
#define FIT_SUB_SPORT_BMX                                                        (FIT_CAST(FIT_SUB_SPORT, 29)) // Cycling
#define FIT_SUB_SPORT_CASUAL_WALKING                                             (FIT_CAST(FIT_SUB_SPORT, 30)) // Walking
#define FIT_SUB_SPORT_SPEED_WALKING                                              (FIT_CAST(FIT_SUB_SPORT, 31)) // Walking
#define FIT_SUB_SPORT_BIKE_TO_RUN_TRANSITION                                     (FIT_CAST(FIT_SUB_SPORT, 32)) // Transition
#define FIT_SUB_SPORT_RUN_TO_BIKE_TRANSITION                                     (FIT_CAST(FIT_SUB_SPORT, 33)) // Transition
#define FIT_SUB_SPORT_SWIM_TO_BIKE_TRANSITION                                    (FIT_CAST(FIT_SUB_SPORT, 34)) // Transition
#define FIT_SUB_SPORT_ATV                                                        (FIT_CAST(FIT_SUB_SPORT, 35)) // Motorcycling
#define FIT_SUB_SPORT_MOTOCROSS                                                  (FIT_CAST(FIT_SUB_SPORT, 36)) // Motorcycling
#define FIT_SUB_SPORT_BACKCOUNTRY                                                (FIT_CAST(FIT_SUB_SPORT, 37)) // Alpine Skiing/Snowboarding
#define FIT_SUB_SPORT_RESORT                                                     (FIT_CAST(FIT_SUB_SPORT, 38)) // Alpine Skiing/Snowboarding
#define FIT_SUB_SPORT_RC_DRONE                                                   (FIT_CAST(FIT_SUB_SPORT, 39)) // Flying
#define FIT_SUB_SPORT_WINGSUIT                                                   (FIT_CAST(FIT_SUB_SPORT, 40)) // Flying
#define FIT_SUB_SPORT_WHITEWATER                                                 (FIT_CAST(FIT_SUB_SPORT, 41)) // Kayaking/Rafting
#define FIT_SUB_SPORT_SKATE_SKIING                                               (FIT_CAST(FIT_SUB_SPORT, 42)) // Cross Country Skiing
#define FIT_SUB_SPORT_YOGA                                                       (FIT_CAST(FIT_SUB_SPORT, 43)) // Training
#define FIT_SUB_SPORT_PILATES                                                    (FIT_CAST(FIT_SUB_SPORT, 44)) // Fitness Equipment
#define FIT_SUB_SPORT_INDOOR_RUNNING                                             (FIT_CAST(FIT_SUB_SPORT, 45)) // Run
#define FIT_SUB_SPORT_GRAVEL_CYCLING                                             (FIT_CAST(FIT_SUB_SPORT, 46)) // Cycling
#define FIT_SUB_SPORT_E_BIKE_MOUNTAIN                                            (FIT_CAST(FIT_SUB_SPORT, 47)) // Cycling
#define FIT_SUB_SPORT_COMMUTING                                                  (FIT_CAST(FIT_SUB_SPORT, 48)) // Cycling
#define FIT_SUB_SPORT_MIXED_SURFACE                                              (FIT_CAST(FIT_SUB_SPORT, 49)) // Cycling
#define FIT_SUB_SPORT_NAVIGATE                                                   (FIT_CAST(FIT_SUB_SPORT, 50))
#define FIT_SUB_SPORT_TRACK_ME                                                   (FIT_CAST(FIT_SUB_SPORT, 51))
#define FIT_SUB_SPORT_MAP                                                        (FIT_CAST(FIT_SUB_SPORT, 52))
#define FIT_SUB_SPORT_SINGLE_GAS_DIVING                                          (FIT_CAST(FIT_SUB_SPORT, 53)) // Diving
#define FIT_SUB_SPORT_MULTI_GAS_DIVING                                           (FIT_CAST(FIT_SUB_SPORT, 54)) // Diving
#define FIT_SUB_SPORT_GAUGE_DIVING                                               (FIT_CAST(FIT_SUB_SPORT, 55)) // Diving
#define FIT_SUB_SPORT_APNEA_DIVING                                               (FIT_CAST(FIT_SUB_SPORT, 56)) // Diving
#define FIT_SUB_SPORT_APNEA_HUNTING                                              (FIT_CAST(FIT_SUB_SPORT, 57)) // Diving
#define FIT_SUB_SPORT_VIRTUAL_ACTIVITY                                           (FIT_CAST(FIT_SUB_SPORT, 58))
#define FIT_SUB_SPORT_OBSTACLE                                                   (FIT_CAST(FIT_SUB_SPORT, 59)) // Used for events where participants run, crawl through mud, climb over walls, etc.
#define FIT_SUB_SPORT_BREATHING                                                  (FIT_CAST(FIT_SUB_SPORT, 62))
#define FIT_SUB_SPORT_SAIL_RACE                                                  (FIT_CAST(FIT_SUB_SPORT, 65)) // Sailing
#define FIT_SUB_SPORT_ULTRA                                                      (FIT_CAST(FIT_SUB_SPORT, 67)) // Ultramarathon
#define FIT_SUB_SPORT_INDOOR_CLIMBING                                            (FIT_CAST(FIT_SUB_SPORT, 68)) // Climbing
#define FIT_SUB_SPORT_BOULDERING                                                 (FIT_CAST(FIT_SUB_SPORT, 69)) // Climbing
#define FIT_SUB_SPORT_HIIT                                                       (FIT_CAST(FIT_SUB_SPORT, 70)) // High Intensity Interval Training
#define FIT_SUB_SPORT_AMRAP                                                      (FIT_CAST(FIT_SUB_SPORT, 73)) // HIIT
#define FIT_SUB_SPORT_EMOM                                                       (FIT_CAST(FIT_SUB_SPORT, 74)) // HIIT
#define FIT_SUB_SPORT_TABATA                                                     (FIT_CAST(FIT_SUB_SPORT, 75)) // HIIT
#define FIT_SUB_SPORT_PICKLEBALL                                                 (FIT_CAST(FIT_SUB_SPORT, 84)) // Racket
#define FIT_SUB_SPORT_PADEL                                                      (FIT_CAST(FIT_SUB_SPORT, 85)) // Racket
#define FIT_SUB_SPORT_INDOOR_WHEELCHAIR_WALK                                     (FIT_CAST(FIT_SUB_SPORT, 86))
#define FIT_SUB_SPORT_INDOOR_WHEELCHAIR_RUN                                      (FIT_CAST(FIT_SUB_SPORT, 87))
#define FIT_SUB_SPORT_INDOOR_HAND_CYCLING                                        (FIT_CAST(FIT_SUB_SPORT, 88))
#define FIT_SUB_SPORT_SQUASH                                                     (FIT_CAST(FIT_SUB_SPORT, 94))
#define FIT_SUB_SPORT_BADMINTON                                                  (FIT_CAST(FIT_SUB_SPORT, 95))
#define FIT_SUB_SPORT_RACQUETBALL                                                (FIT_CAST(FIT_SUB_SPORT, 96))
#define FIT_SUB_SPORT_TABLE_TENNIS                                               (FIT_CAST(FIT_SUB_SPORT, 97))
#define FIT_SUB_SPORT_FLY_CANOPY                                                 (FIT_CAST(FIT_SUB_SPORT, 110)) // Flying
#define FIT_SUB_SPORT_FLY_PARAGLIDE                                              (FIT_CAST(FIT_SUB_SPORT, 111)) // Flying
#define FIT_SUB_SPORT_FLY_PARAMOTOR                                              (FIT_CAST(FIT_SUB_SPORT, 112)) // Flying
#define FIT_SUB_SPORT_FLY_PRESSURIZED                                            (FIT_CAST(FIT_SUB_SPORT, 113)) // Flying
#define FIT_SUB_SPORT_FLY_NAVIGATE                                               (FIT_CAST(FIT_SUB_SPORT, 114)) // Flying
#define FIT_SUB_SPORT_FLY_TIMER                                                  (FIT_CAST(FIT_SUB_SPORT, 115)) // Flying
#define FIT_SUB_SPORT_FLY_ALTIMETER                                              (FIT_CAST(FIT_SUB_SPORT, 116)) // Flying
#define FIT_SUB_SPORT_FLY_WX                                                     (FIT_CAST(FIT_SUB_SPORT, 117)) // Flying
#define FIT_SUB_SPORT_FLY_VFR                                                    (FIT_CAST(FIT_SUB_SPORT, 118)) // Flying
#define FIT_SUB_SPORT_FLY_IFR                                                    (FIT_CAST(FIT_SUB_SPORT, 119)) // Flying
#define FIT_SUB_SPORT_ALL                                                        (FIT_CAST(FIT_SUB_SPORT, 254))
#define FIT_SUB_SPORT_COUNT                                                      89

typedef FIT_ENUM FIT_SPORT_EVENT;
#define FIT_SPORT_EVENT_INVALID                                                  FIT_ENUM_INVALID
#define FIT_SPORT_EVENT_UNCATEGORIZED                                            (FIT_CAST(FIT_SPORT_EVENT, 0))
#define FIT_SPORT_EVENT_GEOCACHING                                               (FIT_CAST(FIT_SPORT_EVENT, 1))
#define FIT_SPORT_EVENT_FITNESS                                                  (FIT_CAST(FIT_SPORT_EVENT, 2))
#define FIT_SPORT_EVENT_RECREATION                                               (FIT_CAST(FIT_SPORT_EVENT, 3))
#define FIT_SPORT_EVENT_RACE                                                     (FIT_CAST(FIT_SPORT_EVENT, 4))
#define FIT_SPORT_EVENT_SPECIAL_EVENT                                            (FIT_CAST(FIT_SPORT_EVENT, 5))
#define FIT_SPORT_EVENT_TRAINING                                                 (FIT_CAST(FIT_SPORT_EVENT, 6))
#define FIT_SPORT_EVENT_TRANSPORTATION                                           (FIT_CAST(FIT_SPORT_EVENT, 7))
#define FIT_SPORT_EVENT_TOURING                                                  (FIT_CAST(FIT_SPORT_EVENT, 8))
#define FIT_SPORT_EVENT_COUNT                                                    9

typedef FIT_ENUM FIT_ACTIVITY;
#define FIT_ACTIVITY_INVALID                                                     FIT_ENUM_INVALID
#define FIT_ACTIVITY_MANUAL                                                      (FIT_CAST(FIT_ACTIVITY, 0))
#define FIT_ACTIVITY_AUTO_MULTI_SPORT                                            (FIT_CAST(FIT_ACTIVITY, 1))
#define FIT_ACTIVITY_COUNT                                                       2

typedef FIT_ENUM FIT_INTENSITY;
#define FIT_INTENSITY_INVALID                                                    FIT_ENUM_INVALID
#define FIT_INTENSITY_ACTIVE                                                     (FIT_CAST(FIT_INTENSITY, 0))
#define FIT_INTENSITY_REST                                                       (FIT_CAST(FIT_INTENSITY, 1))
#define FIT_INTENSITY_WARMUP                                                     (FIT_CAST(FIT_INTENSITY, 2))
#define FIT_INTENSITY_COOLDOWN                                                   (FIT_CAST(FIT_INTENSITY, 3))
#define FIT_INTENSITY_RECOVERY                                                   (FIT_CAST(FIT_INTENSITY, 4))
#define FIT_INTENSITY_INTERVAL                                                   (FIT_CAST(FIT_INTENSITY, 5))
#define FIT_INTENSITY_OTHER                                                      (FIT_CAST(FIT_INTENSITY, 6))
#define FIT_INTENSITY_COUNT                                                      7

typedef FIT_ENUM FIT_SESSION_TRIGGER;
#define FIT_SESSION_TRIGGER_INVALID                                              FIT_ENUM_INVALID
#define FIT_SESSION_TRIGGER_ACTIVITY_END                                         (FIT_CAST(FIT_SESSION_TRIGGER, 0))
#define FIT_SESSION_TRIGGER_MANUAL                                               (FIT_CAST(FIT_SESSION_TRIGGER, 1)) // User changed sport.
#define FIT_SESSION_TRIGGER_AUTO_MULTI_SPORT                                     (FIT_CAST(FIT_SESSION_TRIGGER, 2)) // Auto multi-sport feature is enabled and user pressed lap button to advance session.
#define FIT_SESSION_TRIGGER_FITNESS_EQUIPMENT                                    (FIT_CAST(FIT_SESSION_TRIGGER, 3)) // Auto sport change caused by user linking to fitness equipment.
#define FIT_SESSION_TRIGGER_COUNT                                                4

typedef FIT_ENUM FIT_AUTOLAP_TRIGGER;
#define FIT_AUTOLAP_TRIGGER_INVALID                                              FIT_ENUM_INVALID
#define FIT_AUTOLAP_TRIGGER_TIME                                                 (FIT_CAST(FIT_AUTOLAP_TRIGGER, 0))
#define FIT_AUTOLAP_TRIGGER_DISTANCE                                             (FIT_CAST(FIT_AUTOLAP_TRIGGER, 1))
#define FIT_AUTOLAP_TRIGGER_POSITION_START                                       (FIT_CAST(FIT_AUTOLAP_TRIGGER, 2))
#define FIT_AUTOLAP_TRIGGER_POSITION_LAP                                         (FIT_CAST(FIT_AUTOLAP_TRIGGER, 3))
#define FIT_AUTOLAP_TRIGGER_POSITION_WAYPOINT                                    (FIT_CAST(FIT_AUTOLAP_TRIGGER, 4))
#define FIT_AUTOLAP_TRIGGER_POSITION_MARKED                                      (FIT_CAST(FIT_AUTOLAP_TRIGGER, 5))
#define FIT_AUTOLAP_TRIGGER_OFF                                                  (FIT_CAST(FIT_AUTOLAP_TRIGGER, 6))
#define FIT_AUTOLAP_TRIGGER_AUTO_SELECT                                          (FIT_CAST(FIT_AUTOLAP_TRIGGER, 13))
#define FIT_AUTOLAP_TRIGGER_COUNT                                                8

typedef FIT_ENUM FIT_LAP_TRIGGER;
#define FIT_LAP_TRIGGER_INVALID                                                  FIT_ENUM_INVALID
#define FIT_LAP_TRIGGER_MANUAL                                                   (FIT_CAST(FIT_LAP_TRIGGER, 0))
#define FIT_LAP_TRIGGER_TIME                                                     (FIT_CAST(FIT_LAP_TRIGGER, 1))
#define FIT_LAP_TRIGGER_DISTANCE                                                 (FIT_CAST(FIT_LAP_TRIGGER, 2))
#define FIT_LAP_TRIGGER_POSITION_START                                           (FIT_CAST(FIT_LAP_TRIGGER, 3))
#define FIT_LAP_TRIGGER_POSITION_LAP                                             (FIT_CAST(FIT_LAP_TRIGGER, 4))
#define FIT_LAP_TRIGGER_POSITION_WAYPOINT                                        (FIT_CAST(FIT_LAP_TRIGGER, 5))
#define FIT_LAP_TRIGGER_POSITION_MARKED                                          (FIT_CAST(FIT_LAP_TRIGGER, 6))
#define FIT_LAP_TRIGGER_SESSION_END                                              (FIT_CAST(FIT_LAP_TRIGGER, 7))
#define FIT_LAP_TRIGGER_FITNESS_EQUIPMENT                                        (FIT_CAST(FIT_LAP_TRIGGER, 8))
#define FIT_LAP_TRIGGER_COUNT                                                    9

typedef FIT_ENUM FIT_TIME_MODE;
#define FIT_TIME_MODE_INVALID                                                    FIT_ENUM_INVALID
#define FIT_TIME_MODE_HOUR12                                                     (FIT_CAST(FIT_TIME_MODE, 0))
#define FIT_TIME_MODE_HOUR24                                                     (FIT_CAST(FIT_TIME_MODE, 1)) // Does not use a leading zero and has a colon
#define FIT_TIME_MODE_MILITARY                                                   (FIT_CAST(FIT_TIME_MODE, 2)) // Uses a leading zero and does not have a colon
#define FIT_TIME_MODE_HOUR_12_WITH_SECONDS                                       (FIT_CAST(FIT_TIME_MODE, 3))
#define FIT_TIME_MODE_HOUR_24_WITH_SECONDS                                       (FIT_CAST(FIT_TIME_MODE, 4))
#define FIT_TIME_MODE_UTC                                                        (FIT_CAST(FIT_TIME_MODE, 5))
#define FIT_TIME_MODE_COUNT                                                      6

typedef FIT_ENUM FIT_BACKLIGHT_MODE;
#define FIT_BACKLIGHT_MODE_INVALID                                               FIT_ENUM_INVALID
#define FIT_BACKLIGHT_MODE_OFF                                                   (FIT_CAST(FIT_BACKLIGHT_MODE, 0))
#define FIT_BACKLIGHT_MODE_MANUAL                                                (FIT_CAST(FIT_BACKLIGHT_MODE, 1))
#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES                                      (FIT_CAST(FIT_BACKLIGHT_MODE, 2))
#define FIT_BACKLIGHT_MODE_AUTO_BRIGHTNESS                                       (FIT_CAST(FIT_BACKLIGHT_MODE, 3))
#define FIT_BACKLIGHT_MODE_SMART_NOTIFICATIONS                                   (FIT_CAST(FIT_BACKLIGHT_MODE, 4))
#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES_NIGHT                                (FIT_CAST(FIT_BACKLIGHT_MODE, 5))
#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES_AND_SMART_NOTIFICATIONS              (FIT_CAST(FIT_BACKLIGHT_MODE, 6))
#define FIT_BACKLIGHT_MODE_COUNT                                                 7

typedef FIT_ENUM FIT_DATE_MODE;
#define FIT_DATE_MODE_INVALID                                                    FIT_ENUM_INVALID
#define FIT_DATE_MODE_DAY_MONTH                                                  (FIT_CAST(FIT_DATE_MODE, 0))
#define FIT_DATE_MODE_MONTH_DAY                                                  (FIT_CAST(FIT_DATE_MODE, 1))
#define FIT_DATE_MODE_COUNT                                                      2

typedef FIT_UINT8 FIT_BACKLIGHT_TIMEOUT; // Timeout in seconds.
#define FIT_BACKLIGHT_TIMEOUT_INVALID                                            FIT_UINT8_INVALID
#define FIT_BACKLIGHT_TIMEOUT_INFINITE                                           (FIT_CAST(FIT_BACKLIGHT_TIMEOUT, 0)) // Backlight stays on forever.
#define FIT_BACKLIGHT_TIMEOUT_COUNT                                              1

typedef FIT_ENUM FIT_EVENT;
#define FIT_EVENT_INVALID                                                        FIT_ENUM_INVALID
#define FIT_EVENT_TIMER                                                          (FIT_CAST(FIT_EVENT, 0)) // Group 0. Start / stop_all
#define FIT_EVENT_WORKOUT                                                        (FIT_CAST(FIT_EVENT, 3)) // start / stop
#define FIT_EVENT_WORKOUT_STEP                                                   (FIT_CAST(FIT_EVENT, 4)) // Start at beginning of workout. Stop at end of each step.
#define FIT_EVENT_POWER_DOWN                                                     (FIT_CAST(FIT_EVENT, 5)) // stop_all group 0
#define FIT_EVENT_POWER_UP                                                       (FIT_CAST(FIT_EVENT, 6)) // stop_all group 0
#define FIT_EVENT_OFF_COURSE                                                     (FIT_CAST(FIT_EVENT, 7)) // start / stop group 0
#define FIT_EVENT_SESSION                                                        (FIT_CAST(FIT_EVENT, 8)) // Stop at end of each session.
#define FIT_EVENT_LAP                                                            (FIT_CAST(FIT_EVENT, 9)) // Stop at end of each lap.
#define FIT_EVENT_COURSE_POINT                                                   (FIT_CAST(FIT_EVENT, 10)) // marker
#define FIT_EVENT_BATTERY                                                        (FIT_CAST(FIT_EVENT, 11)) // marker
#define FIT_EVENT_VIRTUAL_PARTNER_PACE                                           (FIT_CAST(FIT_EVENT, 12)) // Group 1. Start at beginning of activity if VP enabled, when VP pace is changed during activity or VP enabled mid activity. stop_disable when VP disabled.
#define FIT_EVENT_HR_HIGH_ALERT                                                  (FIT_CAST(FIT_EVENT, 13)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_HR_LOW_ALERT                                                   (FIT_CAST(FIT_EVENT, 14)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_SPEED_HIGH_ALERT                                               (FIT_CAST(FIT_EVENT, 15)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_SPEED_LOW_ALERT                                                (FIT_CAST(FIT_EVENT, 16)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_CAD_HIGH_ALERT                                                 (FIT_CAST(FIT_EVENT, 17)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_CAD_LOW_ALERT                                                  (FIT_CAST(FIT_EVENT, 18)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_POWER_HIGH_ALERT                                               (FIT_CAST(FIT_EVENT, 19)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_POWER_LOW_ALERT                                                (FIT_CAST(FIT_EVENT, 20)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_RECOVERY_HR                                                    (FIT_CAST(FIT_EVENT, 21)) // marker
#define FIT_EVENT_BATTERY_LOW                                                    (FIT_CAST(FIT_EVENT, 22)) // marker
#define FIT_EVENT_TIME_DURATION_ALERT                                            (FIT_CAST(FIT_EVENT, 23)) // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
#define FIT_EVENT_DISTANCE_DURATION_ALERT                                        (FIT_CAST(FIT_EVENT, 24)) // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
#define FIT_EVENT_CALORIE_DURATION_ALERT                                         (FIT_CAST(FIT_EVENT, 25)) // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
#define FIT_EVENT_ACTIVITY                                                       (FIT_CAST(FIT_EVENT, 26)) // Group 1.. Stop at end of activity.
#define FIT_EVENT_FITNESS_EQUIPMENT                                              (FIT_CAST(FIT_EVENT, 27)) // marker
#define FIT_EVENT_LENGTH                                                         (FIT_CAST(FIT_EVENT, 28)) // Stop at end of each length.
#define FIT_EVENT_USER_MARKER                                                    (FIT_CAST(FIT_EVENT, 32)) // marker
#define FIT_EVENT_SPORT_POINT                                                    (FIT_CAST(FIT_EVENT, 33)) // marker
#define FIT_EVENT_CALIBRATION                                                    (FIT_CAST(FIT_EVENT, 36)) // start/stop/marker
#define FIT_EVENT_FRONT_GEAR_CHANGE                                              (FIT_CAST(FIT_EVENT, 42)) // marker
#define FIT_EVENT_REAR_GEAR_CHANGE                                               (FIT_CAST(FIT_EVENT, 43)) // marker
#define FIT_EVENT_RIDER_POSITION_CHANGE                                          (FIT_CAST(FIT_EVENT, 44)) // marker
#define FIT_EVENT_ELEV_HIGH_ALERT                                                (FIT_CAST(FIT_EVENT, 45)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_ELEV_LOW_ALERT                                                 (FIT_CAST(FIT_EVENT, 46)) // Group 0. Start / stop when in alert condition.
#define FIT_EVENT_COMM_TIMEOUT                                                   (FIT_CAST(FIT_EVENT, 47)) // marker
#define FIT_EVENT_AUTO_ACTIVITY_DETECT                                           (FIT_CAST(FIT_EVENT, 54)) // marker
#define FIT_EVENT_DIVE_ALERT                                                     (FIT_CAST(FIT_EVENT, 56)) // marker
#define FIT_EVENT_DIVE_GAS_SWITCHED                                              (FIT_CAST(FIT_EVENT, 57)) // marker
#define FIT_EVENT_TANK_PRESSURE_RESERVE                                          (FIT_CAST(FIT_EVENT, 71)) // marker
#define FIT_EVENT_TANK_PRESSURE_CRITICAL                                         (FIT_CAST(FIT_EVENT, 72)) // marker
#define FIT_EVENT_TANK_LOST                                                      (FIT_CAST(FIT_EVENT, 73)) // marker
#define FIT_EVENT_RADAR_THREAT_ALERT                                             (FIT_CAST(FIT_EVENT, 75)) // start/stop/marker
#define FIT_EVENT_TANK_BATTERY_LOW                                               (FIT_CAST(FIT_EVENT, 76)) // marker
#define FIT_EVENT_TANK_POD_CONNECTED                                             (FIT_CAST(FIT_EVENT, 81)) // marker - tank pod has connected
#define FIT_EVENT_TANK_POD_DISCONNECTED                                          (FIT_CAST(FIT_EVENT, 82)) // marker - tank pod has lost connection
#define FIT_EVENT_COUNT                                                          46

typedef FIT_ENUM FIT_EVENT_TYPE;
#define FIT_EVENT_TYPE_INVALID                                                   FIT_ENUM_INVALID
#define FIT_EVENT_TYPE_START                                                     (FIT_CAST(FIT_EVENT_TYPE, 0))
#define FIT_EVENT_TYPE_STOP                                                      (FIT_CAST(FIT_EVENT_TYPE, 1))
#define FIT_EVENT_TYPE_CONSECUTIVE_DEPRECIATED                                   (FIT_CAST(FIT_EVENT_TYPE, 2))
#define FIT_EVENT_TYPE_MARKER                                                    (FIT_CAST(FIT_EVENT_TYPE, 3))
#define FIT_EVENT_TYPE_STOP_ALL                                                  (FIT_CAST(FIT_EVENT_TYPE, 4))
#define FIT_EVENT_TYPE_BEGIN_DEPRECIATED                                         (FIT_CAST(FIT_EVENT_TYPE, 5))
#define FIT_EVENT_TYPE_END_DEPRECIATED                                           (FIT_CAST(FIT_EVENT_TYPE, 6))
#define FIT_EVENT_TYPE_END_ALL_DEPRECIATED                                       (FIT_CAST(FIT_EVENT_TYPE, 7))
#define FIT_EVENT_TYPE_STOP_DISABLE                                              (FIT_CAST(FIT_EVENT_TYPE, 8))
#define FIT_EVENT_TYPE_STOP_DISABLE_ALL                                          (FIT_CAST(FIT_EVENT_TYPE, 9))
#define FIT_EVENT_TYPE_COUNT                                                     10

typedef FIT_ENUM FIT_TIMER_TRIGGER; // timer event data
#define FIT_TIMER_TRIGGER_INVALID                                                FIT_ENUM_INVALID
#define FIT_TIMER_TRIGGER_MANUAL                                                 (FIT_CAST(FIT_TIMER_TRIGGER, 0))
#define FIT_TIMER_TRIGGER_AUTO                                                   (FIT_CAST(FIT_TIMER_TRIGGER, 1))
#define FIT_TIMER_TRIGGER_FITNESS_EQUIPMENT                                      (FIT_CAST(FIT_TIMER_TRIGGER, 2))
#define FIT_TIMER_TRIGGER_COUNT                                                  3

typedef FIT_ENUM FIT_FITNESS_EQUIPMENT_STATE; // fitness equipment event data
#define FIT_FITNESS_EQUIPMENT_STATE_INVALID                                      FIT_ENUM_INVALID
#define FIT_FITNESS_EQUIPMENT_STATE_READY                                        (FIT_CAST(FIT_FITNESS_EQUIPMENT_STATE, 0))
#define FIT_FITNESS_EQUIPMENT_STATE_IN_USE                                       (FIT_CAST(FIT_FITNESS_EQUIPMENT_STATE, 1))
#define FIT_FITNESS_EQUIPMENT_STATE_PAUSED                                       (FIT_CAST(FIT_FITNESS_EQUIPMENT_STATE, 2))
#define FIT_FITNESS_EQUIPMENT_STATE_UNKNOWN                                      (FIT_CAST(FIT_FITNESS_EQUIPMENT_STATE, 3)) // lost connection to fitness equipment
#define FIT_FITNESS_EQUIPMENT_STATE_COUNT                                        4

typedef FIT_ENUM FIT_TONE;
#define FIT_TONE_INVALID                                                         FIT_ENUM_INVALID
#define FIT_TONE_OFF                                                             (FIT_CAST(FIT_TONE, 0))
#define FIT_TONE_TONE                                                            (FIT_CAST(FIT_TONE, 1))
#define FIT_TONE_VIBRATE                                                         (FIT_CAST(FIT_TONE, 2))
#define FIT_TONE_TONE_AND_VIBRATE                                                (FIT_CAST(FIT_TONE, 3))
#define FIT_TONE_COUNT                                                           4

typedef FIT_ENUM FIT_AUTOSCROLL;
#define FIT_AUTOSCROLL_INVALID                                                   FIT_ENUM_INVALID
#define FIT_AUTOSCROLL_NONE                                                      (FIT_CAST(FIT_AUTOSCROLL, 0))
#define FIT_AUTOSCROLL_SLOW                                                      (FIT_CAST(FIT_AUTOSCROLL, 1))
#define FIT_AUTOSCROLL_MEDIUM                                                    (FIT_CAST(FIT_AUTOSCROLL, 2))
#define FIT_AUTOSCROLL_FAST                                                      (FIT_CAST(FIT_AUTOSCROLL, 3))
#define FIT_AUTOSCROLL_COUNT                                                     4

typedef FIT_ENUM FIT_ACTIVITY_CLASS;
#define FIT_ACTIVITY_CLASS_INVALID                                               FIT_ENUM_INVALID
#define FIT_ACTIVITY_CLASS_LEVEL                                                 (FIT_CAST(FIT_ACTIVITY_CLASS, 0x7F)) // 0 to 100
#define FIT_ACTIVITY_CLASS_LEVEL_MAX                                             (FIT_CAST(FIT_ACTIVITY_CLASS, 100))
#define FIT_ACTIVITY_CLASS_ATHLETE                                               (FIT_CAST(FIT_ACTIVITY_CLASS, 0x80))
#define FIT_ACTIVITY_CLASS_COUNT                                                 3

typedef FIT_ENUM FIT_HR_ZONE_CALC;
#define FIT_HR_ZONE_CALC_INVALID                                                 FIT_ENUM_INVALID
#define FIT_HR_ZONE_CALC_CUSTOM                                                  (FIT_CAST(FIT_HR_ZONE_CALC, 0))
#define FIT_HR_ZONE_CALC_PERCENT_MAX_HR                                          (FIT_CAST(FIT_HR_ZONE_CALC, 1))
#define FIT_HR_ZONE_CALC_PERCENT_HRR                                             (FIT_CAST(FIT_HR_ZONE_CALC, 2))
#define FIT_HR_ZONE_CALC_PERCENT_LTHR                                            (FIT_CAST(FIT_HR_ZONE_CALC, 3))
#define FIT_HR_ZONE_CALC_COUNT                                                   4

typedef FIT_ENUM FIT_PWR_ZONE_CALC;
#define FIT_PWR_ZONE_CALC_INVALID                                                FIT_ENUM_INVALID
#define FIT_PWR_ZONE_CALC_CUSTOM                                                 (FIT_CAST(FIT_PWR_ZONE_CALC, 0))
#define FIT_PWR_ZONE_CALC_PERCENT_FTP                                            (FIT_CAST(FIT_PWR_ZONE_CALC, 1))
#define FIT_PWR_ZONE_CALC_COUNT                                                  2

typedef FIT_ENUM FIT_WKT_STEP_DURATION;
#define FIT_WKT_STEP_DURATION_INVALID                                            FIT_ENUM_INVALID
#define FIT_WKT_STEP_DURATION_TIME                                               (FIT_CAST(FIT_WKT_STEP_DURATION, 0))
#define FIT_WKT_STEP_DURATION_DISTANCE                                           (FIT_CAST(FIT_WKT_STEP_DURATION, 1))
#define FIT_WKT_STEP_DURATION_HR_LESS_THAN                                       (FIT_CAST(FIT_WKT_STEP_DURATION, 2))
#define FIT_WKT_STEP_DURATION_HR_GREATER_THAN                                    (FIT_CAST(FIT_WKT_STEP_DURATION, 3))
#define FIT_WKT_STEP_DURATION_CALORIES                                           (FIT_CAST(FIT_WKT_STEP_DURATION, 4))
#define FIT_WKT_STEP_DURATION_OPEN                                               (FIT_CAST(FIT_WKT_STEP_DURATION, 5))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_STEPS_CMPLT                           (FIT_CAST(FIT_WKT_STEP_DURATION, 6))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_TIME                                  (FIT_CAST(FIT_WKT_STEP_DURATION, 7))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_DISTANCE                              (FIT_CAST(FIT_WKT_STEP_DURATION, 8))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_CALORIES                              (FIT_CAST(FIT_WKT_STEP_DURATION, 9))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_HR_LESS_THAN                          (FIT_CAST(FIT_WKT_STEP_DURATION, 10))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_HR_GREATER_THAN                       (FIT_CAST(FIT_WKT_STEP_DURATION, 11))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_LESS_THAN                       (FIT_CAST(FIT_WKT_STEP_DURATION, 12))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_GREATER_THAN                    (FIT_CAST(FIT_WKT_STEP_DURATION, 13))
#define FIT_WKT_STEP_DURATION_POWER_LESS_THAN                                    (FIT_CAST(FIT_WKT_STEP_DURATION, 14))
#define FIT_WKT_STEP_DURATION_POWER_GREATER_THAN                                 (FIT_CAST(FIT_WKT_STEP_DURATION, 15))
#define FIT_WKT_STEP_DURATION_TRAINING_PEAKS_TSS                                 (FIT_CAST(FIT_WKT_STEP_DURATION, 16))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_LAST_LAP_LESS_THAN              (FIT_CAST(FIT_WKT_STEP_DURATION, 17))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_MAX_POWER_LAST_LAP_LESS_THAN          (FIT_CAST(FIT_WKT_STEP_DURATION, 18))
#define FIT_WKT_STEP_DURATION_POWER_3S_LESS_THAN                                 (FIT_CAST(FIT_WKT_STEP_DURATION, 19))
#define FIT_WKT_STEP_DURATION_POWER_10S_LESS_THAN                                (FIT_CAST(FIT_WKT_STEP_DURATION, 20))
#define FIT_WKT_STEP_DURATION_POWER_30S_LESS_THAN                                (FIT_CAST(FIT_WKT_STEP_DURATION, 21))
#define FIT_WKT_STEP_DURATION_POWER_3S_GREATER_THAN                              (FIT_CAST(FIT_WKT_STEP_DURATION, 22))
#define FIT_WKT_STEP_DURATION_POWER_10S_GREATER_THAN                             (FIT_CAST(FIT_WKT_STEP_DURATION, 23))
#define FIT_WKT_STEP_DURATION_POWER_30S_GREATER_THAN                             (FIT_CAST(FIT_WKT_STEP_DURATION, 24))
#define FIT_WKT_STEP_DURATION_POWER_LAP_LESS_THAN                                (FIT_CAST(FIT_WKT_STEP_DURATION, 25))
#define FIT_WKT_STEP_DURATION_POWER_LAP_GREATER_THAN                             (FIT_CAST(FIT_WKT_STEP_DURATION, 26))
#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_TRAINING_PEAKS_TSS                    (FIT_CAST(FIT_WKT_STEP_DURATION, 27))
#define FIT_WKT_STEP_DURATION_REPETITION_TIME                                    (FIT_CAST(FIT_WKT_STEP_DURATION, 28))
#define FIT_WKT_STEP_DURATION_REPS                                               (FIT_CAST(FIT_WKT_STEP_DURATION, 29))
#define FIT_WKT_STEP_DURATION_TIME_ONLY                                          (FIT_CAST(FIT_WKT_STEP_DURATION, 31))
#define FIT_WKT_STEP_DURATION_COUNT                                              31

typedef FIT_ENUM FIT_WKT_STEP_TARGET;
#define FIT_WKT_STEP_TARGET_INVALID                                              FIT_ENUM_INVALID
#define FIT_WKT_STEP_TARGET_SPEED                                                (FIT_CAST(FIT_WKT_STEP_TARGET, 0))
#define FIT_WKT_STEP_TARGET_HEART_RATE                                           (FIT_CAST(FIT_WKT_STEP_TARGET, 1))
#define FIT_WKT_STEP_TARGET_OPEN                                                 (FIT_CAST(FIT_WKT_STEP_TARGET, 2))
#define FIT_WKT_STEP_TARGET_CADENCE                                              (FIT_CAST(FIT_WKT_STEP_TARGET, 3))
#define FIT_WKT_STEP_TARGET_POWER                                                (FIT_CAST(FIT_WKT_STEP_TARGET, 4))
#define FIT_WKT_STEP_TARGET_GRADE                                                (FIT_CAST(FIT_WKT_STEP_TARGET, 5))
#define FIT_WKT_STEP_TARGET_RESISTANCE                                           (FIT_CAST(FIT_WKT_STEP_TARGET, 6))
#define FIT_WKT_STEP_TARGET_POWER_3S                                             (FIT_CAST(FIT_WKT_STEP_TARGET, 7))
#define FIT_WKT_STEP_TARGET_POWER_10S                                            (FIT_CAST(FIT_WKT_STEP_TARGET, 8))
#define FIT_WKT_STEP_TARGET_POWER_30S                                            (FIT_CAST(FIT_WKT_STEP_TARGET, 9))
#define FIT_WKT_STEP_TARGET_POWER_LAP                                            (FIT_CAST(FIT_WKT_STEP_TARGET, 10))
#define FIT_WKT_STEP_TARGET_SWIM_STROKE                                          (FIT_CAST(FIT_WKT_STEP_TARGET, 11))
#define FIT_WKT_STEP_TARGET_SPEED_LAP                                            (FIT_CAST(FIT_WKT_STEP_TARGET, 12))
#define FIT_WKT_STEP_TARGET_HEART_RATE_LAP                                       (FIT_CAST(FIT_WKT_STEP_TARGET, 13))
#define FIT_WKT_STEP_TARGET_COUNT                                                14

typedef FIT_ENUM FIT_GOAL;
#define FIT_GOAL_INVALID                                                         FIT_ENUM_INVALID
#define FIT_GOAL_TIME                                                            (FIT_CAST(FIT_GOAL, 0))
#define FIT_GOAL_DISTANCE                                                        (FIT_CAST(FIT_GOAL, 1))
#define FIT_GOAL_CALORIES                                                        (FIT_CAST(FIT_GOAL, 2))
#define FIT_GOAL_FREQUENCY                                                       (FIT_CAST(FIT_GOAL, 3))
#define FIT_GOAL_STEPS                                                           (FIT_CAST(FIT_GOAL, 4))
#define FIT_GOAL_ASCENT                                                          (FIT_CAST(FIT_GOAL, 5))
#define FIT_GOAL_ACTIVE_MINUTES                                                  (FIT_CAST(FIT_GOAL, 6))
#define FIT_GOAL_COUNT                                                           7

typedef FIT_ENUM FIT_GOAL_RECURRENCE;
#define FIT_GOAL_RECURRENCE_INVALID                                              FIT_ENUM_INVALID
#define FIT_GOAL_RECURRENCE_OFF                                                  (FIT_CAST(FIT_GOAL_RECURRENCE, 0))
#define FIT_GOAL_RECURRENCE_DAILY                                                (FIT_CAST(FIT_GOAL_RECURRENCE, 1))
#define FIT_GOAL_RECURRENCE_WEEKLY                                               (FIT_CAST(FIT_GOAL_RECURRENCE, 2))
#define FIT_GOAL_RECURRENCE_MONTHLY                                              (FIT_CAST(FIT_GOAL_RECURRENCE, 3))
#define FIT_GOAL_RECURRENCE_YEARLY                                               (FIT_CAST(FIT_GOAL_RECURRENCE, 4))
#define FIT_GOAL_RECURRENCE_CUSTOM                                               (FIT_CAST(FIT_GOAL_RECURRENCE, 5))
#define FIT_GOAL_RECURRENCE_COUNT                                                6

typedef FIT_ENUM FIT_GOAL_SOURCE;
#define FIT_GOAL_SOURCE_INVALID                                                  FIT_ENUM_INVALID
#define FIT_GOAL_SOURCE_AUTO                                                     (FIT_CAST(FIT_GOAL_SOURCE, 0)) // Device generated
#define FIT_GOAL_SOURCE_COMMUNITY                                                (FIT_CAST(FIT_GOAL_SOURCE, 1)) // Social network sourced goal
#define FIT_GOAL_SOURCE_USER                                                     (FIT_CAST(FIT_GOAL_SOURCE, 2)) // Manually generated
#define FIT_GOAL_SOURCE_COUNT                                                    3

typedef FIT_ENUM FIT_SCHEDULE;
#define FIT_SCHEDULE_INVALID                                                     FIT_ENUM_INVALID
#define FIT_SCHEDULE_WORKOUT                                                     (FIT_CAST(FIT_SCHEDULE, 0))
#define FIT_SCHEDULE_COURSE                                                      (FIT_CAST(FIT_SCHEDULE, 1))
#define FIT_SCHEDULE_COUNT                                                       2

typedef FIT_ENUM FIT_COURSE_POINT;
#define FIT_COURSE_POINT_INVALID                                                 FIT_ENUM_INVALID
#define FIT_COURSE_POINT_GENERIC                                                 (FIT_CAST(FIT_COURSE_POINT, 0))
#define FIT_COURSE_POINT_SUMMIT                                                  (FIT_CAST(FIT_COURSE_POINT, 1))
#define FIT_COURSE_POINT_VALLEY                                                  (FIT_CAST(FIT_COURSE_POINT, 2))
#define FIT_COURSE_POINT_WATER                                                   (FIT_CAST(FIT_COURSE_POINT, 3))
#define FIT_COURSE_POINT_FOOD                                                    (FIT_CAST(FIT_COURSE_POINT, 4))
#define FIT_COURSE_POINT_DANGER                                                  (FIT_CAST(FIT_COURSE_POINT, 5))
#define FIT_COURSE_POINT_LEFT                                                    (FIT_CAST(FIT_COURSE_POINT, 6))
#define FIT_COURSE_POINT_RIGHT                                                   (FIT_CAST(FIT_COURSE_POINT, 7))
#define FIT_COURSE_POINT_STRAIGHT                                                (FIT_CAST(FIT_COURSE_POINT, 8))
#define FIT_COURSE_POINT_FIRST_AID                                               (FIT_CAST(FIT_COURSE_POINT, 9))
#define FIT_COURSE_POINT_FOURTH_CATEGORY                                         (FIT_CAST(FIT_COURSE_POINT, 10))
#define FIT_COURSE_POINT_THIRD_CATEGORY                                          (FIT_CAST(FIT_COURSE_POINT, 11))
#define FIT_COURSE_POINT_SECOND_CATEGORY                                         (FIT_CAST(FIT_COURSE_POINT, 12))
#define FIT_COURSE_POINT_FIRST_CATEGORY                                          (FIT_CAST(FIT_COURSE_POINT, 13))
#define FIT_COURSE_POINT_HORS_CATEGORY                                           (FIT_CAST(FIT_COURSE_POINT, 14))
#define FIT_COURSE_POINT_SPRINT                                                  (FIT_CAST(FIT_COURSE_POINT, 15))
#define FIT_COURSE_POINT_LEFT_FORK                                               (FIT_CAST(FIT_COURSE_POINT, 16))
#define FIT_COURSE_POINT_RIGHT_FORK                                              (FIT_CAST(FIT_COURSE_POINT, 17))
#define FIT_COURSE_POINT_MIDDLE_FORK                                             (FIT_CAST(FIT_COURSE_POINT, 18))
#define FIT_COURSE_POINT_SLIGHT_LEFT                                             (FIT_CAST(FIT_COURSE_POINT, 19))
#define FIT_COURSE_POINT_SHARP_LEFT                                              (FIT_CAST(FIT_COURSE_POINT, 20))
#define FIT_COURSE_POINT_SLIGHT_RIGHT                                            (FIT_CAST(FIT_COURSE_POINT, 21))
#define FIT_COURSE_POINT_SHARP_RIGHT                                             (FIT_CAST(FIT_COURSE_POINT, 22))
#define FIT_COURSE_POINT_U_TURN                                                  (FIT_CAST(FIT_COURSE_POINT, 23))
#define FIT_COURSE_POINT_SEGMENT_START                                           (FIT_CAST(FIT_COURSE_POINT, 24))
#define FIT_COURSE_POINT_SEGMENT_END                                             (FIT_CAST(FIT_COURSE_POINT, 25))
#define FIT_COURSE_POINT_CAMPSITE                                                (FIT_CAST(FIT_COURSE_POINT, 27))
#define FIT_COURSE_POINT_AID_STATION                                             (FIT_CAST(FIT_COURSE_POINT, 28))
#define FIT_COURSE_POINT_REST_AREA                                               (FIT_CAST(FIT_COURSE_POINT, 29))
#define FIT_COURSE_POINT_GENERAL_DISTANCE                                        (FIT_CAST(FIT_COURSE_POINT, 30)) // Used with UpAhead
#define FIT_COURSE_POINT_SERVICE                                                 (FIT_CAST(FIT_COURSE_POINT, 31))
#define FIT_COURSE_POINT_ENERGY_GEL                                              (FIT_CAST(FIT_COURSE_POINT, 32))
#define FIT_COURSE_POINT_SPORTS_DRINK                                            (FIT_CAST(FIT_COURSE_POINT, 33))
#define FIT_COURSE_POINT_MILE_MARKER                                             (FIT_CAST(FIT_COURSE_POINT, 34))
#define FIT_COURSE_POINT_CHECKPOINT                                              (FIT_CAST(FIT_COURSE_POINT, 35))
#define FIT_COURSE_POINT_SHELTER                                                 (FIT_CAST(FIT_COURSE_POINT, 36))
#define FIT_COURSE_POINT_MEETING_SPOT                                            (FIT_CAST(FIT_COURSE_POINT, 37))
#define FIT_COURSE_POINT_OVERLOOK                                                (FIT_CAST(FIT_COURSE_POINT, 38))
#define FIT_COURSE_POINT_TOILET                                                  (FIT_CAST(FIT_COURSE_POINT, 39))
#define FIT_COURSE_POINT_SHOWER                                                  (FIT_CAST(FIT_COURSE_POINT, 40))
#define FIT_COURSE_POINT_GEAR                                                    (FIT_CAST(FIT_COURSE_POINT, 41))
#define FIT_COURSE_POINT_SHARP_CURVE                                             (FIT_CAST(FIT_COURSE_POINT, 42))
#define FIT_COURSE_POINT_STEEP_INCLINE                                           (FIT_CAST(FIT_COURSE_POINT, 43))
#define FIT_COURSE_POINT_TUNNEL                                                  (FIT_CAST(FIT_COURSE_POINT, 44))
#define FIT_COURSE_POINT_BRIDGE                                                  (FIT_CAST(FIT_COURSE_POINT, 45))
#define FIT_COURSE_POINT_OBSTACLE                                                (FIT_CAST(FIT_COURSE_POINT, 46))
#define FIT_COURSE_POINT_CROSSING                                                (FIT_CAST(FIT_COURSE_POINT, 47))
#define FIT_COURSE_POINT_STORE                                                   (FIT_CAST(FIT_COURSE_POINT, 48))
#define FIT_COURSE_POINT_TRANSITION                                              (FIT_CAST(FIT_COURSE_POINT, 49))
#define FIT_COURSE_POINT_NAVAID                                                  (FIT_CAST(FIT_COURSE_POINT, 50))
#define FIT_COURSE_POINT_TRANSPORT                                               (FIT_CAST(FIT_COURSE_POINT, 51))
#define FIT_COURSE_POINT_ALERT                                                   (FIT_CAST(FIT_COURSE_POINT, 52))
#define FIT_COURSE_POINT_INFO                                                    (FIT_CAST(FIT_COURSE_POINT, 53))
#define FIT_COURSE_POINT_COUNT                                                   53

typedef FIT_UINT16 FIT_MANUFACTURER;
#define FIT_MANUFACTURER_INVALID                                                 FIT_UINT16_INVALID
#define FIT_MANUFACTURER_GARMIN                                                  (FIT_CAST(FIT_MANUFACTURER, 1))
#define FIT_MANUFACTURER_GARMIN_FR405_ANTFS                                      (FIT_CAST(FIT_MANUFACTURER, 2)) // Do not use. Used by FR405 for ANTFS man id.
#define FIT_MANUFACTURER_ZEPHYR                                                  (FIT_CAST(FIT_MANUFACTURER, 3))
#define FIT_MANUFACTURER_DAYTON                                                  (FIT_CAST(FIT_MANUFACTURER, 4))
#define FIT_MANUFACTURER_IDT                                                     (FIT_CAST(FIT_MANUFACTURER, 5))
#define FIT_MANUFACTURER_SRM                                                     (FIT_CAST(FIT_MANUFACTURER, 6))
#define FIT_MANUFACTURER_QUARQ                                                   (FIT_CAST(FIT_MANUFACTURER, 7))
#define FIT_MANUFACTURER_IBIKE                                                   (FIT_CAST(FIT_MANUFACTURER, 8))
#define FIT_MANUFACTURER_SARIS                                                   (FIT_CAST(FIT_MANUFACTURER, 9))
#define FIT_MANUFACTURER_SPARK_HK                                                (FIT_CAST(FIT_MANUFACTURER, 10))
#define FIT_MANUFACTURER_TANITA                                                  (FIT_CAST(FIT_MANUFACTURER, 11))
#define FIT_MANUFACTURER_ECHOWELL                                                (FIT_CAST(FIT_MANUFACTURER, 12))
#define FIT_MANUFACTURER_DYNASTREAM_OEM                                          (FIT_CAST(FIT_MANUFACTURER, 13))
#define FIT_MANUFACTURER_NAUTILUS                                                (FIT_CAST(FIT_MANUFACTURER, 14))
#define FIT_MANUFACTURER_DYNASTREAM                                              (FIT_CAST(FIT_MANUFACTURER, 15))
#define FIT_MANUFACTURER_TIMEX                                                   (FIT_CAST(FIT_MANUFACTURER, 16))
#define FIT_MANUFACTURER_METRIGEAR                                               (FIT_CAST(FIT_MANUFACTURER, 17))
#define FIT_MANUFACTURER_XELIC                                                   (FIT_CAST(FIT_MANUFACTURER, 18))
#define FIT_MANUFACTURER_BEURER                                                  (FIT_CAST(FIT_MANUFACTURER, 19))
#define FIT_MANUFACTURER_CARDIOSPORT                                             (FIT_CAST(FIT_MANUFACTURER, 20))
#define FIT_MANUFACTURER_A_AND_D                                                 (FIT_CAST(FIT_MANUFACTURER, 21))
#define FIT_MANUFACTURER_HMM                                                     (FIT_CAST(FIT_MANUFACTURER, 22))
#define FIT_MANUFACTURER_SUUNTO                                                  (FIT_CAST(FIT_MANUFACTURER, 23))
#define FIT_MANUFACTURER_THITA_ELEKTRONIK                                        (FIT_CAST(FIT_MANUFACTURER, 24))
#define FIT_MANUFACTURER_GPULSE                                                  (FIT_CAST(FIT_MANUFACTURER, 25))
#define FIT_MANUFACTURER_CLEAN_MOBILE                                            (FIT_CAST(FIT_MANUFACTURER, 26))
#define FIT_MANUFACTURER_PEDAL_BRAIN                                             (FIT_CAST(FIT_MANUFACTURER, 27))
#define FIT_MANUFACTURER_PEAKSWARE                                               (FIT_CAST(FIT_MANUFACTURER, 28))
#define FIT_MANUFACTURER_SAXONAR                                                 (FIT_CAST(FIT_MANUFACTURER, 29))
#define FIT_MANUFACTURER_LEMOND_FITNESS                                          (FIT_CAST(FIT_MANUFACTURER, 30))
#define FIT_MANUFACTURER_DEXCOM                                                  (FIT_CAST(FIT_MANUFACTURER, 31))
#define FIT_MANUFACTURER_WAHOO_FITNESS                                           (FIT_CAST(FIT_MANUFACTURER, 32))
#define FIT_MANUFACTURER_OCTANE_FITNESS                                          (FIT_CAST(FIT_MANUFACTURER, 33))
#define FIT_MANUFACTURER_ARCHINOETICS                                            (FIT_CAST(FIT_MANUFACTURER, 34))
#define FIT_MANUFACTURER_THE_HURT_BOX                                            (FIT_CAST(FIT_MANUFACTURER, 35))
#define FIT_MANUFACTURER_CITIZEN_SYSTEMS                                         (FIT_CAST(FIT_MANUFACTURER, 36))
#define FIT_MANUFACTURER_MAGELLAN                                                (FIT_CAST(FIT_MANUFACTURER, 37))
#define FIT_MANUFACTURER_OSYNCE                                                  (FIT_CAST(FIT_MANUFACTURER, 38))
#define FIT_MANUFACTURER_HOLUX                                                   (FIT_CAST(FIT_MANUFACTURER, 39))
#define FIT_MANUFACTURER_CONCEPT2                                                (FIT_CAST(FIT_MANUFACTURER, 40))
#define FIT_MANUFACTURER_SHIMANO                                                 (FIT_CAST(FIT_MANUFACTURER, 41))
#define FIT_MANUFACTURER_ONE_GIANT_LEAP                                          (FIT_CAST(FIT_MANUFACTURER, 42))
#define FIT_MANUFACTURER_ACE_SENSOR                                              (FIT_CAST(FIT_MANUFACTURER, 43))
#define FIT_MANUFACTURER_BRIM_BROTHERS                                           (FIT_CAST(FIT_MANUFACTURER, 44))
#define FIT_MANUFACTURER_XPLOVA                                                  (FIT_CAST(FIT_MANUFACTURER, 45))
#define FIT_MANUFACTURER_PERCEPTION_DIGITAL                                      (FIT_CAST(FIT_MANUFACTURER, 46))
#define FIT_MANUFACTURER_BF1SYSTEMS                                              (FIT_CAST(FIT_MANUFACTURER, 47))
#define FIT_MANUFACTURER_PIONEER                                                 (FIT_CAST(FIT_MANUFACTURER, 48))
#define FIT_MANUFACTURER_SPANTEC                                                 (FIT_CAST(FIT_MANUFACTURER, 49))
#define FIT_MANUFACTURER_METALOGICS                                              (FIT_CAST(FIT_MANUFACTURER, 50))
#define FIT_MANUFACTURER_4IIIIS                                                  (FIT_CAST(FIT_MANUFACTURER, 51))
#define FIT_MANUFACTURER_SEIKO_EPSON                                             (FIT_CAST(FIT_MANUFACTURER, 52))
#define FIT_MANUFACTURER_SEIKO_EPSON_OEM                                         (FIT_CAST(FIT_MANUFACTURER, 53))
#define FIT_MANUFACTURER_IFOR_POWELL                                             (FIT_CAST(FIT_MANUFACTURER, 54))
#define FIT_MANUFACTURER_MAXWELL_GUIDER                                          (FIT_CAST(FIT_MANUFACTURER, 55))
#define FIT_MANUFACTURER_STAR_TRAC                                               (FIT_CAST(FIT_MANUFACTURER, 56))
#define FIT_MANUFACTURER_BREAKAWAY                                               (FIT_CAST(FIT_MANUFACTURER, 57))
#define FIT_MANUFACTURER_ALATECH_TECHNOLOGY_LTD                                  (FIT_CAST(FIT_MANUFACTURER, 58))
#define FIT_MANUFACTURER_MIO_TECHNOLOGY_EUROPE                                   (FIT_CAST(FIT_MANUFACTURER, 59))
#define FIT_MANUFACTURER_ROTOR                                                   (FIT_CAST(FIT_MANUFACTURER, 60))
#define FIT_MANUFACTURER_GEONAUTE                                                (FIT_CAST(FIT_MANUFACTURER, 61))
#define FIT_MANUFACTURER_ID_BIKE                                                 (FIT_CAST(FIT_MANUFACTURER, 62))
#define FIT_MANUFACTURER_SPECIALIZED                                             (FIT_CAST(FIT_MANUFACTURER, 63))
#define FIT_MANUFACTURER_WTEK                                                    (FIT_CAST(FIT_MANUFACTURER, 64))
#define FIT_MANUFACTURER_PHYSICAL_ENTERPRISES                                    (FIT_CAST(FIT_MANUFACTURER, 65))
#define FIT_MANUFACTURER_NORTH_POLE_ENGINEERING                                  (FIT_CAST(FIT_MANUFACTURER, 66))
#define FIT_MANUFACTURER_BKOOL                                                   (FIT_CAST(FIT_MANUFACTURER, 67))
#define FIT_MANUFACTURER_CATEYE                                                  (FIT_CAST(FIT_MANUFACTURER, 68))
#define FIT_MANUFACTURER_STAGES_CYCLING                                          (FIT_CAST(FIT_MANUFACTURER, 69))
#define FIT_MANUFACTURER_SIGMASPORT                                              (FIT_CAST(FIT_MANUFACTURER, 70))
#define FIT_MANUFACTURER_TOMTOM                                                  (FIT_CAST(FIT_MANUFACTURER, 71))
#define FIT_MANUFACTURER_PERIPEDAL                                               (FIT_CAST(FIT_MANUFACTURER, 72))
#define FIT_MANUFACTURER_WATTBIKE                                                (FIT_CAST(FIT_MANUFACTURER, 73))
#define FIT_MANUFACTURER_MOXY                                                    (FIT_CAST(FIT_MANUFACTURER, 76))
#define FIT_MANUFACTURER_CICLOSPORT                                              (FIT_CAST(FIT_MANUFACTURER, 77))
#define FIT_MANUFACTURER_POWERBAHN                                               (FIT_CAST(FIT_MANUFACTURER, 78))
#define FIT_MANUFACTURER_ACORN_PROJECTS_APS                                      (FIT_CAST(FIT_MANUFACTURER, 79))
#define FIT_MANUFACTURER_LIFEBEAM                                                (FIT_CAST(FIT_MANUFACTURER, 80))
#define FIT_MANUFACTURER_BONTRAGER                                               (FIT_CAST(FIT_MANUFACTURER, 81))
#define FIT_MANUFACTURER_WELLGO                                                  (FIT_CAST(FIT_MANUFACTURER, 82))
#define FIT_MANUFACTURER_SCOSCHE                                                 (FIT_CAST(FIT_MANUFACTURER, 83))
#define FIT_MANUFACTURER_MAGURA                                                  (FIT_CAST(FIT_MANUFACTURER, 84))
#define FIT_MANUFACTURER_WOODWAY                                                 (FIT_CAST(FIT_MANUFACTURER, 85))
#define FIT_MANUFACTURER_ELITE                                                   (FIT_CAST(FIT_MANUFACTURER, 86))
#define FIT_MANUFACTURER_NIELSEN_KELLERMAN                                       (FIT_CAST(FIT_MANUFACTURER, 87))
#define FIT_MANUFACTURER_DK_CITY                                                 (FIT_CAST(FIT_MANUFACTURER, 88))
#define FIT_MANUFACTURER_TACX                                                    (FIT_CAST(FIT_MANUFACTURER, 89))
#define FIT_MANUFACTURER_DIRECTION_TECHNOLOGY                                    (FIT_CAST(FIT_MANUFACTURER, 90))
#define FIT_MANUFACTURER_MAGTONIC                                                (FIT_CAST(FIT_MANUFACTURER, 91))
#define FIT_MANUFACTURER_1PARTCARBON                                             (FIT_CAST(FIT_MANUFACTURER, 92))
#define FIT_MANUFACTURER_INSIDE_RIDE_TECHNOLOGIES                                (FIT_CAST(FIT_MANUFACTURER, 93))
#define FIT_MANUFACTURER_SOUND_OF_MOTION                                         (FIT_CAST(FIT_MANUFACTURER, 94))
#define FIT_MANUFACTURER_STRYD                                                   (FIT_CAST(FIT_MANUFACTURER, 95))
#define FIT_MANUFACTURER_ICG                                                     (FIT_CAST(FIT_MANUFACTURER, 96)) // Indoorcycling Group
#define FIT_MANUFACTURER_MIPULSE                                                 (FIT_CAST(FIT_MANUFACTURER, 97))
#define FIT_MANUFACTURER_BSX_ATHLETICS                                           (FIT_CAST(FIT_MANUFACTURER, 98))
#define FIT_MANUFACTURER_LOOK                                                    (FIT_CAST(FIT_MANUFACTURER, 99))
#define FIT_MANUFACTURER_CAMPAGNOLO_SRL                                          (FIT_CAST(FIT_MANUFACTURER, 100))
#define FIT_MANUFACTURER_BODY_BIKE_SMART                                         (FIT_CAST(FIT_MANUFACTURER, 101))
#define FIT_MANUFACTURER_PRAXISWORKS                                             (FIT_CAST(FIT_MANUFACTURER, 102))
#define FIT_MANUFACTURER_LIMITS_TECHNOLOGY                                       (FIT_CAST(FIT_MANUFACTURER, 103)) // Limits Technology Ltd.
#define FIT_MANUFACTURER_TOPACTION_TECHNOLOGY                                    (FIT_CAST(FIT_MANUFACTURER, 104)) // TopAction Technology Inc.
#define FIT_MANUFACTURER_COSINUSS                                                (FIT_CAST(FIT_MANUFACTURER, 105))
#define FIT_MANUFACTURER_FITCARE                                                 (FIT_CAST(FIT_MANUFACTURER, 106))
#define FIT_MANUFACTURER_MAGENE                                                  (FIT_CAST(FIT_MANUFACTURER, 107))
#define FIT_MANUFACTURER_GIANT_MANUFACTURING_CO                                  (FIT_CAST(FIT_MANUFACTURER, 108))
#define FIT_MANUFACTURER_TIGRASPORT                                              (FIT_CAST(FIT_MANUFACTURER, 109)) // Tigrasport
#define FIT_MANUFACTURER_SALUTRON                                                (FIT_CAST(FIT_MANUFACTURER, 110))
#define FIT_MANUFACTURER_TECHNOGYM                                               (FIT_CAST(FIT_MANUFACTURER, 111))
#define FIT_MANUFACTURER_BRYTON_SENSORS                                          (FIT_CAST(FIT_MANUFACTURER, 112))
#define FIT_MANUFACTURER_LATITUDE_LIMITED                                        (FIT_CAST(FIT_MANUFACTURER, 113))
#define FIT_MANUFACTURER_SOARING_TECHNOLOGY                                      (FIT_CAST(FIT_MANUFACTURER, 114))
#define FIT_MANUFACTURER_IGPSPORT                                                (FIT_CAST(FIT_MANUFACTURER, 115))
#define FIT_MANUFACTURER_THINKRIDER                                              (FIT_CAST(FIT_MANUFACTURER, 116))
#define FIT_MANUFACTURER_GOPHER_SPORT                                            (FIT_CAST(FIT_MANUFACTURER, 117))
#define FIT_MANUFACTURER_WATERROWER                                              (FIT_CAST(FIT_MANUFACTURER, 118))
#define FIT_MANUFACTURER_ORANGETHEORY                                            (FIT_CAST(FIT_MANUFACTURER, 119))
#define FIT_MANUFACTURER_INPEAK                                                  (FIT_CAST(FIT_MANUFACTURER, 120))
#define FIT_MANUFACTURER_KINETIC                                                 (FIT_CAST(FIT_MANUFACTURER, 121))
#define FIT_MANUFACTURER_JOHNSON_HEALTH_TECH                                     (FIT_CAST(FIT_MANUFACTURER, 122))
#define FIT_MANUFACTURER_POLAR_ELECTRO                                           (FIT_CAST(FIT_MANUFACTURER, 123))
#define FIT_MANUFACTURER_SEESENSE                                                (FIT_CAST(FIT_MANUFACTURER, 124))
#define FIT_MANUFACTURER_NCI_TECHNOLOGY                                          (FIT_CAST(FIT_MANUFACTURER, 125))
#define FIT_MANUFACTURER_IQSQUARE                                                (FIT_CAST(FIT_MANUFACTURER, 126))
#define FIT_MANUFACTURER_LEOMO                                                   (FIT_CAST(FIT_MANUFACTURER, 127))
#define FIT_MANUFACTURER_IFIT_COM                                                (FIT_CAST(FIT_MANUFACTURER, 128))
#define FIT_MANUFACTURER_COROS_BYTE                                              (FIT_CAST(FIT_MANUFACTURER, 129))
#define FIT_MANUFACTURER_VERSA_DESIGN                                            (FIT_CAST(FIT_MANUFACTURER, 130))
#define FIT_MANUFACTURER_CHILEAF                                                 (FIT_CAST(FIT_MANUFACTURER, 131))
#define FIT_MANUFACTURER_CYCPLUS                                                 (FIT_CAST(FIT_MANUFACTURER, 132))
#define FIT_MANUFACTURER_GRAVAA_BYTE                                             (FIT_CAST(FIT_MANUFACTURER, 133))
#define FIT_MANUFACTURER_SIGEYI                                                  (FIT_CAST(FIT_MANUFACTURER, 134))
#define FIT_MANUFACTURER_COOSPO                                                  (FIT_CAST(FIT_MANUFACTURER, 135))
#define FIT_MANUFACTURER_GEOID                                                   (FIT_CAST(FIT_MANUFACTURER, 136))
#define FIT_MANUFACTURER_BOSCH                                                   (FIT_CAST(FIT_MANUFACTURER, 137))
#define FIT_MANUFACTURER_KYTO                                                    (FIT_CAST(FIT_MANUFACTURER, 138))
#define FIT_MANUFACTURER_KINETIC_SPORTS                                          (FIT_CAST(FIT_MANUFACTURER, 139))
#define FIT_MANUFACTURER_DECATHLON_BYTE                                          (FIT_CAST(FIT_MANUFACTURER, 140))
#define FIT_MANUFACTURER_TQ_SYSTEMS                                              (FIT_CAST(FIT_MANUFACTURER, 141))
#define FIT_MANUFACTURER_TAG_HEUER                                               (FIT_CAST(FIT_MANUFACTURER, 142))
#define FIT_MANUFACTURER_KEISER_FITNESS                                          (FIT_CAST(FIT_MANUFACTURER, 143))
#define FIT_MANUFACTURER_ZWIFT_BYTE                                              (FIT_CAST(FIT_MANUFACTURER, 144))
#define FIT_MANUFACTURER_PORSCHE_EP                                              (FIT_CAST(FIT_MANUFACTURER, 145))
#define FIT_MANUFACTURER_BLACKBIRD                                               (FIT_CAST(FIT_MANUFACTURER, 146))
#define FIT_MANUFACTURER_MEILAN_BYTE                                             (FIT_CAST(FIT_MANUFACTURER, 147))
#define FIT_MANUFACTURER_EZON                                                    (FIT_CAST(FIT_MANUFACTURER, 148))
#define FIT_MANUFACTURER_LAISI                                                   (FIT_CAST(FIT_MANUFACTURER, 149))
#define FIT_MANUFACTURER_MYZONE                                                  (FIT_CAST(FIT_MANUFACTURER, 150))
#define FIT_MANUFACTURER_ABAWO                                                   (FIT_CAST(FIT_MANUFACTURER, 151))
#define FIT_MANUFACTURER_BAFANG                                                  (FIT_CAST(FIT_MANUFACTURER, 152))
#define FIT_MANUFACTURER_LUHONG_TECHNOLOGY                                       (FIT_CAST(FIT_MANUFACTURER, 153))
#define FIT_MANUFACTURER_DEVELOPMENT                                             (FIT_CAST(FIT_MANUFACTURER, 255))
#define FIT_MANUFACTURER_HEALTHANDLIFE                                           (FIT_CAST(FIT_MANUFACTURER, 257))
#define FIT_MANUFACTURER_LEZYNE                                                  (FIT_CAST(FIT_MANUFACTURER, 258))
#define FIT_MANUFACTURER_SCRIBE_LABS                                             (FIT_CAST(FIT_MANUFACTURER, 259))
#define FIT_MANUFACTURER_ZWIFT                                                   (FIT_CAST(FIT_MANUFACTURER, 260))
#define FIT_MANUFACTURER_WATTEAM                                                 (FIT_CAST(FIT_MANUFACTURER, 261))
#define FIT_MANUFACTURER_RECON                                                   (FIT_CAST(FIT_MANUFACTURER, 262))
#define FIT_MANUFACTURER_FAVERO_ELECTRONICS                                      (FIT_CAST(FIT_MANUFACTURER, 263))
#define FIT_MANUFACTURER_DYNOVELO                                                (FIT_CAST(FIT_MANUFACTURER, 264))
#define FIT_MANUFACTURER_STRAVA                                                  (FIT_CAST(FIT_MANUFACTURER, 265))
#define FIT_MANUFACTURER_PRECOR                                                  (FIT_CAST(FIT_MANUFACTURER, 266)) // Amer Sports
#define FIT_MANUFACTURER_BRYTON                                                  (FIT_CAST(FIT_MANUFACTURER, 267))
#define FIT_MANUFACTURER_SRAM                                                    (FIT_CAST(FIT_MANUFACTURER, 268))
#define FIT_MANUFACTURER_NAVMAN                                                  (FIT_CAST(FIT_MANUFACTURER, 269)) // MiTAC Global Corporation (Mio Technology)
#define FIT_MANUFACTURER_COBI                                                    (FIT_CAST(FIT_MANUFACTURER, 270)) // COBI GmbH
#define FIT_MANUFACTURER_SPIVI                                                   (FIT_CAST(FIT_MANUFACTURER, 271))
#define FIT_MANUFACTURER_MIO_MAGELLAN                                            (FIT_CAST(FIT_MANUFACTURER, 272))
#define FIT_MANUFACTURER_EVESPORTS                                               (FIT_CAST(FIT_MANUFACTURER, 273))
#define FIT_MANUFACTURER_SENSITIVUS_GAUGE                                        (FIT_CAST(FIT_MANUFACTURER, 274))
#define FIT_MANUFACTURER_PODOON                                                  (FIT_CAST(FIT_MANUFACTURER, 275))
#define FIT_MANUFACTURER_LIFE_TIME_FITNESS                                       (FIT_CAST(FIT_MANUFACTURER, 276))
#define FIT_MANUFACTURER_FALCO_E_MOTORS                                          (FIT_CAST(FIT_MANUFACTURER, 277)) // Falco eMotors Inc.
#define FIT_MANUFACTURER_MINOURA                                                 (FIT_CAST(FIT_MANUFACTURER, 278))
#define FIT_MANUFACTURER_CYCLIQ                                                  (FIT_CAST(FIT_MANUFACTURER, 279))
#define FIT_MANUFACTURER_LUXOTTICA                                               (FIT_CAST(FIT_MANUFACTURER, 280))
#define FIT_MANUFACTURER_TRAINER_ROAD                                            (FIT_CAST(FIT_MANUFACTURER, 281))
#define FIT_MANUFACTURER_THE_SUFFERFEST                                          (FIT_CAST(FIT_MANUFACTURER, 282))
#define FIT_MANUFACTURER_FULLSPEEDAHEAD                                          (FIT_CAST(FIT_MANUFACTURER, 283))
#define FIT_MANUFACTURER_VIRTUALTRAINING                                         (FIT_CAST(FIT_MANUFACTURER, 284))
#define FIT_MANUFACTURER_FEEDBACKSPORTS                                          (FIT_CAST(FIT_MANUFACTURER, 285))
#define FIT_MANUFACTURER_OMATA                                                   (FIT_CAST(FIT_MANUFACTURER, 286))
#define FIT_MANUFACTURER_VDO                                                     (FIT_CAST(FIT_MANUFACTURER, 287))
#define FIT_MANUFACTURER_MAGNETICDAYS                                            (FIT_CAST(FIT_MANUFACTURER, 288))
#define FIT_MANUFACTURER_HAMMERHEAD                                              (FIT_CAST(FIT_MANUFACTURER, 289))
#define FIT_MANUFACTURER_KINETIC_BY_KURT                                         (FIT_CAST(FIT_MANUFACTURER, 290))
#define FIT_MANUFACTURER_SHAPELOG                                                (FIT_CAST(FIT_MANUFACTURER, 291))
#define FIT_MANUFACTURER_DABUZIDUO                                               (FIT_CAST(FIT_MANUFACTURER, 292))
#define FIT_MANUFACTURER_JETBLACK                                                (FIT_CAST(FIT_MANUFACTURER, 293))
#define FIT_MANUFACTURER_COROS                                                   (FIT_CAST(FIT_MANUFACTURER, 294))
#define FIT_MANUFACTURER_VIRTUGO                                                 (FIT_CAST(FIT_MANUFACTURER, 295))
#define FIT_MANUFACTURER_VELOSENSE                                               (FIT_CAST(FIT_MANUFACTURER, 296))
#define FIT_MANUFACTURER_CYCLIGENTINC                                            (FIT_CAST(FIT_MANUFACTURER, 297))
#define FIT_MANUFACTURER_TRAILFORKS                                              (FIT_CAST(FIT_MANUFACTURER, 298))
#define FIT_MANUFACTURER_MAHLE_EBIKEMOTION                                       (FIT_CAST(FIT_MANUFACTURER, 299))
#define FIT_MANUFACTURER_NURVV                                                   (FIT_CAST(FIT_MANUFACTURER, 300))
#define FIT_MANUFACTURER_MICROPROGRAM                                            (FIT_CAST(FIT_MANUFACTURER, 301))
#define FIT_MANUFACTURER_ZONE5CLOUD                                              (FIT_CAST(FIT_MANUFACTURER, 302))
#define FIT_MANUFACTURER_GREENTEG                                                (FIT_CAST(FIT_MANUFACTURER, 303))
#define FIT_MANUFACTURER_YAMAHA_MOTORS                                           (FIT_CAST(FIT_MANUFACTURER, 304))
#define FIT_MANUFACTURER_WHOOP                                                   (FIT_CAST(FIT_MANUFACTURER, 305))
#define FIT_MANUFACTURER_GRAVAA                                                  (FIT_CAST(FIT_MANUFACTURER, 306))
#define FIT_MANUFACTURER_ONELAP                                                  (FIT_CAST(FIT_MANUFACTURER, 307))
#define FIT_MANUFACTURER_MONARK_EXERCISE                                         (FIT_CAST(FIT_MANUFACTURER, 308))
#define FIT_MANUFACTURER_FORM                                                    (FIT_CAST(FIT_MANUFACTURER, 309))
#define FIT_MANUFACTURER_DECATHLON                                               (FIT_CAST(FIT_MANUFACTURER, 310))
#define FIT_MANUFACTURER_SYNCROS                                                 (FIT_CAST(FIT_MANUFACTURER, 311))
#define FIT_MANUFACTURER_HEATUP                                                  (FIT_CAST(FIT_MANUFACTURER, 312))
#define FIT_MANUFACTURER_CANNONDALE                                              (FIT_CAST(FIT_MANUFACTURER, 313))
#define FIT_MANUFACTURER_TRUE_FITNESS                                            (FIT_CAST(FIT_MANUFACTURER, 314))
#define FIT_MANUFACTURER_RGT_CYCLING                                             (FIT_CAST(FIT_MANUFACTURER, 315))
#define FIT_MANUFACTURER_VASA                                                    (FIT_CAST(FIT_MANUFACTURER, 316))
#define FIT_MANUFACTURER_RACE_REPUBLIC                                           (FIT_CAST(FIT_MANUFACTURER, 317))
#define FIT_MANUFACTURER_FAZUA                                                   (FIT_CAST(FIT_MANUFACTURER, 318))
#define FIT_MANUFACTURER_OREKA_TRAINING                                          (FIT_CAST(FIT_MANUFACTURER, 319))
#define FIT_MANUFACTURER_LSEC                                                    (FIT_CAST(FIT_MANUFACTURER, 320)) // Lishun Electric & Communication
#define FIT_MANUFACTURER_LULULEMON_STUDIO                                        (FIT_CAST(FIT_MANUFACTURER, 321))
#define FIT_MANUFACTURER_SHANYUE                                                 (FIT_CAST(FIT_MANUFACTURER, 322))
#define FIT_MANUFACTURER_SPINNING_MDA                                            (FIT_CAST(FIT_MANUFACTURER, 323))
#define FIT_MANUFACTURER_HILLDATING                                              (FIT_CAST(FIT_MANUFACTURER, 324))
#define FIT_MANUFACTURER_AERO_SENSOR                                             (FIT_CAST(FIT_MANUFACTURER, 325))
#define FIT_MANUFACTURER_NIKE                                                    (FIT_CAST(FIT_MANUFACTURER, 326))
#define FIT_MANUFACTURER_MAGICSHINE                                              (FIT_CAST(FIT_MANUFACTURER, 327))
#define FIT_MANUFACTURER_ICTRAINER                                               (FIT_CAST(FIT_MANUFACTURER, 328))
#define FIT_MANUFACTURER_ABSOLUTE_CYCLING                                        (FIT_CAST(FIT_MANUFACTURER, 329))
#define FIT_MANUFACTURER_EO_SWIMBETTER                                           (FIT_CAST(FIT_MANUFACTURER, 330))
#define FIT_MANUFACTURER_MYWHOOSH                                                (FIT_CAST(FIT_MANUFACTURER, 331))
#define FIT_MANUFACTURER_RAVEMEN                                                 (FIT_CAST(FIT_MANUFACTURER, 332))
#define FIT_MANUFACTURER_TEKTRO_RACING_PRODUCTS                                  (FIT_CAST(FIT_MANUFACTURER, 333))
#define FIT_MANUFACTURER_DARAD_INNOVATION_CORPORATION                            (FIT_CAST(FIT_MANUFACTURER, 334))
#define FIT_MANUFACTURER_CYCLOPTIM                                               (FIT_CAST(FIT_MANUFACTURER, 335))
#define FIT_MANUFACTURER_ACTIGRAPHCORP                                           (FIT_CAST(FIT_MANUFACTURER, 5759))
#define FIT_MANUFACTURER_COUNT                                                   232

typedef FIT_UINT16 FIT_GARMIN_PRODUCT;
#define FIT_GARMIN_PRODUCT_INVALID                                               FIT_UINT16_INVALID
#define FIT_GARMIN_PRODUCT_HRM1                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 1))
#define FIT_GARMIN_PRODUCT_AXH01                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2)) // AXH01 HRM chipset
#define FIT_GARMIN_PRODUCT_AXB01                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 3))
#define FIT_GARMIN_PRODUCT_AXB02                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 4))
#define FIT_GARMIN_PRODUCT_HRM2SS                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 5))
#define FIT_GARMIN_PRODUCT_DSI_ALF02                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 6))
#define FIT_GARMIN_PRODUCT_HRM3SS                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 7))
#define FIT_GARMIN_PRODUCT_HRM_RUN_SINGLE_BYTE_PRODUCT_ID                        (FIT_CAST(FIT_GARMIN_PRODUCT, 8)) // hrm_run model for HRM ANT+ messaging
#define FIT_GARMIN_PRODUCT_BSM                                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 9)) // BSM model for ANT+ messaging
#define FIT_GARMIN_PRODUCT_BCM                                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 10)) // BCM model for ANT+ messaging
#define FIT_GARMIN_PRODUCT_AXS01                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 11)) // AXS01 HRM Bike Chipset model for ANT+ messaging
#define FIT_GARMIN_PRODUCT_HRM_TRI_SINGLE_BYTE_PRODUCT_ID                        (FIT_CAST(FIT_GARMIN_PRODUCT, 12)) // hrm_tri model for HRM ANT+ messaging
#define FIT_GARMIN_PRODUCT_HRM4_RUN_SINGLE_BYTE_PRODUCT_ID                       (FIT_CAST(FIT_GARMIN_PRODUCT, 13)) // hrm4 run model for HRM ANT+ messaging
#define FIT_GARMIN_PRODUCT_FR225_SINGLE_BYTE_PRODUCT_ID                          (FIT_CAST(FIT_GARMIN_PRODUCT, 14)) // fr225 model for HRM ANT+ messaging
#define FIT_GARMIN_PRODUCT_GEN3_BSM_SINGLE_BYTE_PRODUCT_ID                       (FIT_CAST(FIT_GARMIN_PRODUCT, 15)) // gen3_bsm model for Bike Speed ANT+ messaging
#define FIT_GARMIN_PRODUCT_GEN3_BCM_SINGLE_BYTE_PRODUCT_ID                       (FIT_CAST(FIT_GARMIN_PRODUCT, 16)) // gen3_bcm model for Bike Cadence ANT+ messaging
#define FIT_GARMIN_PRODUCT_HRM_FIT_SINGLE_BYTE_PRODUCT_ID                        (FIT_CAST(FIT_GARMIN_PRODUCT, 22))
#define FIT_GARMIN_PRODUCT_OHR                                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 255)) // Garmin Wearable Optical Heart Rate Sensor for ANT+ HR Profile Broadcasting
#define FIT_GARMIN_PRODUCT_FR301_CHINA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 473))
#define FIT_GARMIN_PRODUCT_FR301_JAPAN                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 474))
#define FIT_GARMIN_PRODUCT_FR301_KOREA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 475))
#define FIT_GARMIN_PRODUCT_FR301_TAIWAN                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 494))
#define FIT_GARMIN_PRODUCT_FR405                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 717)) // Forerunner 405
#define FIT_GARMIN_PRODUCT_FR50                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 782)) // Forerunner 50
#define FIT_GARMIN_PRODUCT_FR405_JAPAN                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 987))
#define FIT_GARMIN_PRODUCT_FR60                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 988)) // Forerunner 60
#define FIT_GARMIN_PRODUCT_DSI_ALF01                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 1011))
#define FIT_GARMIN_PRODUCT_FR310XT                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1018)) // Forerunner 310
#define FIT_GARMIN_PRODUCT_EDGE500                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1036))
#define FIT_GARMIN_PRODUCT_FR110                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 1124)) // Forerunner 110
#define FIT_GARMIN_PRODUCT_EDGE800                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1169))
#define FIT_GARMIN_PRODUCT_EDGE500_TAIWAN                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 1199))
#define FIT_GARMIN_PRODUCT_EDGE500_JAPAN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1213))
#define FIT_GARMIN_PRODUCT_CHIRP                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 1253))
#define FIT_GARMIN_PRODUCT_FR110_JAPAN                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1274))
#define FIT_GARMIN_PRODUCT_EDGE200                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1325))
#define FIT_GARMIN_PRODUCT_FR910XT                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1328))
#define FIT_GARMIN_PRODUCT_EDGE800_TAIWAN                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 1333))
#define FIT_GARMIN_PRODUCT_EDGE800_JAPAN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1334))
#define FIT_GARMIN_PRODUCT_ALF04                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 1341))
#define FIT_GARMIN_PRODUCT_FR610                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 1345))
#define FIT_GARMIN_PRODUCT_FR210_JAPAN                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1360))
#define FIT_GARMIN_PRODUCT_VECTOR_SS                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 1380))
#define FIT_GARMIN_PRODUCT_VECTOR_CP                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 1381))
#define FIT_GARMIN_PRODUCT_EDGE800_CHINA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1386))
#define FIT_GARMIN_PRODUCT_EDGE500_CHINA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1387))
#define FIT_GARMIN_PRODUCT_APPROACH_G10                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 1405))
#define FIT_GARMIN_PRODUCT_FR610_JAPAN                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1410))
#define FIT_GARMIN_PRODUCT_EDGE500_KOREA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1422))
#define FIT_GARMIN_PRODUCT_FR70                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 1436))
#define FIT_GARMIN_PRODUCT_FR310XT_4T                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 1446))
#define FIT_GARMIN_PRODUCT_AMX                                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 1461))
#define FIT_GARMIN_PRODUCT_FR10                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 1482))
#define FIT_GARMIN_PRODUCT_EDGE800_KOREA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1497))
#define FIT_GARMIN_PRODUCT_SWIM                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 1499))
#define FIT_GARMIN_PRODUCT_FR910XT_CHINA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1537))
#define FIT_GARMIN_PRODUCT_FENIX                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 1551))
#define FIT_GARMIN_PRODUCT_EDGE200_TAIWAN                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 1555))
#define FIT_GARMIN_PRODUCT_EDGE510                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1561))
#define FIT_GARMIN_PRODUCT_EDGE810                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1567))
#define FIT_GARMIN_PRODUCT_TEMPE                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 1570))
#define FIT_GARMIN_PRODUCT_FR910XT_JAPAN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1600))
#define FIT_GARMIN_PRODUCT_FR620                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 1623))
#define FIT_GARMIN_PRODUCT_FR220                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 1632))
#define FIT_GARMIN_PRODUCT_FR910XT_KOREA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1664))
#define FIT_GARMIN_PRODUCT_FR10_JAPAN                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 1688))
#define FIT_GARMIN_PRODUCT_EDGE810_JAPAN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1721))
#define FIT_GARMIN_PRODUCT_VIRB_ELITE                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 1735))
#define FIT_GARMIN_PRODUCT_EDGE_TOURING                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 1736)) // Also Edge Touring Plus
#define FIT_GARMIN_PRODUCT_EDGE510_JAPAN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1742))
#define FIT_GARMIN_PRODUCT_HRM_TRI                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1743)) // Also HRM-Swim
#define FIT_GARMIN_PRODUCT_HRM_RUN                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1752))
#define FIT_GARMIN_PRODUCT_FR920XT                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1765))
#define FIT_GARMIN_PRODUCT_EDGE510_ASIA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 1821))
#define FIT_GARMIN_PRODUCT_EDGE810_CHINA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1822))
#define FIT_GARMIN_PRODUCT_EDGE810_TAIWAN                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 1823))
#define FIT_GARMIN_PRODUCT_EDGE1000                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 1836))
#define FIT_GARMIN_PRODUCT_VIVO_FIT                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 1837))
#define FIT_GARMIN_PRODUCT_VIRB_REMOTE                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1853))
#define FIT_GARMIN_PRODUCT_VIVO_KI                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 1885))
#define FIT_GARMIN_PRODUCT_FR15                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 1903))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1907))
#define FIT_GARMIN_PRODUCT_EDGE510_KOREA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 1918))
#define FIT_GARMIN_PRODUCT_FR620_JAPAN                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1928))
#define FIT_GARMIN_PRODUCT_FR620_CHINA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1929))
#define FIT_GARMIN_PRODUCT_FR220_JAPAN                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1930))
#define FIT_GARMIN_PRODUCT_FR220_CHINA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1931))
#define FIT_GARMIN_PRODUCT_APPROACH_S6                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 1936))
#define FIT_GARMIN_PRODUCT_VIVO_SMART                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 1956))
#define FIT_GARMIN_PRODUCT_FENIX2                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 1967))
#define FIT_GARMIN_PRODUCT_EPIX                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 1988))
#define FIT_GARMIN_PRODUCT_FENIX3                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 2050))
#define FIT_GARMIN_PRODUCT_EDGE1000_TAIWAN                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 2052))
#define FIT_GARMIN_PRODUCT_EDGE1000_JAPAN                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2053))
#define FIT_GARMIN_PRODUCT_FR15_JAPAN                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2061))
#define FIT_GARMIN_PRODUCT_EDGE520                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 2067))
#define FIT_GARMIN_PRODUCT_EDGE1000_CHINA                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2070))
#define FIT_GARMIN_PRODUCT_FR620_RUSSIA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2072))
#define FIT_GARMIN_PRODUCT_FR220_RUSSIA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2073))
#define FIT_GARMIN_PRODUCT_VECTOR_S                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2079))
#define FIT_GARMIN_PRODUCT_EDGE1000_KOREA                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2100))
#define FIT_GARMIN_PRODUCT_FR920XT_TAIWAN                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2130))
#define FIT_GARMIN_PRODUCT_FR920XT_CHINA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2131))
#define FIT_GARMIN_PRODUCT_FR920XT_JAPAN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2132))
#define FIT_GARMIN_PRODUCT_VIRBX                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2134))
#define FIT_GARMIN_PRODUCT_VIVO_SMART_APAC                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 2135))
#define FIT_GARMIN_PRODUCT_ETREX_TOUCH                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2140))
#define FIT_GARMIN_PRODUCT_EDGE25                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 2147))
#define FIT_GARMIN_PRODUCT_FR25                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 2148))
#define FIT_GARMIN_PRODUCT_VIVO_FIT2                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2150))
#define FIT_GARMIN_PRODUCT_FR225                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2153))
#define FIT_GARMIN_PRODUCT_FR630                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2156))
#define FIT_GARMIN_PRODUCT_FR230                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2157))
#define FIT_GARMIN_PRODUCT_FR735XT                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 2158))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_APAC                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 2160))
#define FIT_GARMIN_PRODUCT_VECTOR_2                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2161))
#define FIT_GARMIN_PRODUCT_VECTOR_2S                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2162))
#define FIT_GARMIN_PRODUCT_VIRBXE                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 2172))
#define FIT_GARMIN_PRODUCT_FR620_TAIWAN                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2173))
#define FIT_GARMIN_PRODUCT_FR220_TAIWAN                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2174))
#define FIT_GARMIN_PRODUCT_TRUSWING                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2175))
#define FIT_GARMIN_PRODUCT_D2AIRVENU                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2187))
#define FIT_GARMIN_PRODUCT_FENIX3_CHINA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2188))
#define FIT_GARMIN_PRODUCT_FENIX3_TWN                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2189))
#define FIT_GARMIN_PRODUCT_VARIA_HEADLIGHT                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 2192))
#define FIT_GARMIN_PRODUCT_VARIA_TAILLIGHT_OLD                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 2193))
#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE_1000                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 2204))
#define FIT_GARMIN_PRODUCT_FR225_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2219))
#define FIT_GARMIN_PRODUCT_VARIA_RADAR_TAILLIGHT                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2225))
#define FIT_GARMIN_PRODUCT_VARIA_RADAR_DISPLAY                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 2226))
#define FIT_GARMIN_PRODUCT_EDGE20                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 2238))
#define FIT_GARMIN_PRODUCT_EDGE520_ASIA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2260))
#define FIT_GARMIN_PRODUCT_EDGE520_JAPAN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2261))
#define FIT_GARMIN_PRODUCT_D2_BRAVO                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2262))
#define FIT_GARMIN_PRODUCT_APPROACH_S20                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2266))
#define FIT_GARMIN_PRODUCT_VIVO_SMART2                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2271))
#define FIT_GARMIN_PRODUCT_EDGE1000_THAI                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2274))
#define FIT_GARMIN_PRODUCT_VARIA_REMOTE                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2276))
#define FIT_GARMIN_PRODUCT_EDGE25_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2288))
#define FIT_GARMIN_PRODUCT_EDGE25_JPN                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2289))
#define FIT_GARMIN_PRODUCT_EDGE20_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2290))
#define FIT_GARMIN_PRODUCT_APPROACH_X40                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2292))
#define FIT_GARMIN_PRODUCT_FENIX3_JAPAN                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2293))
#define FIT_GARMIN_PRODUCT_VIVO_SMART_EMEA                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 2294))
#define FIT_GARMIN_PRODUCT_FR630_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2310))
#define FIT_GARMIN_PRODUCT_FR630_JPN                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2311))
#define FIT_GARMIN_PRODUCT_FR230_JPN                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2313))
#define FIT_GARMIN_PRODUCT_HRM4_RUN                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2327))
#define FIT_GARMIN_PRODUCT_EPIX_JAPAN                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2332))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_HR                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2337))
#define FIT_GARMIN_PRODUCT_VIVO_SMART_GPS_HR                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 2347))
#define FIT_GARMIN_PRODUCT_VIVO_SMART_HR                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2348))
#define FIT_GARMIN_PRODUCT_VIVO_SMART_HR_ASIA                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 2361))
#define FIT_GARMIN_PRODUCT_VIVO_SMART_GPS_HR_ASIA                                (FIT_CAST(FIT_GARMIN_PRODUCT, 2362))
#define FIT_GARMIN_PRODUCT_VIVO_MOVE                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2368))
#define FIT_GARMIN_PRODUCT_VARIA_TAILLIGHT                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 2379))
#define FIT_GARMIN_PRODUCT_FR235_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2396))
#define FIT_GARMIN_PRODUCT_FR235_JAPAN                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2397))
#define FIT_GARMIN_PRODUCT_VARIA_VISION                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2398))
#define FIT_GARMIN_PRODUCT_VIVO_FIT3                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2406))
#define FIT_GARMIN_PRODUCT_FENIX3_KOREA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2407))
#define FIT_GARMIN_PRODUCT_FENIX3_SEA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2408))
#define FIT_GARMIN_PRODUCT_FENIX3_HR                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2413))
#define FIT_GARMIN_PRODUCT_VIRB_ULTRA_30                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2417))
#define FIT_GARMIN_PRODUCT_INDEX_SMART_SCALE                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 2429))
#define FIT_GARMIN_PRODUCT_FR235                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2431))
#define FIT_GARMIN_PRODUCT_FENIX3_CHRONOS                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2432))
#define FIT_GARMIN_PRODUCT_OREGON7XX                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2441))
#define FIT_GARMIN_PRODUCT_RINO7XX                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 2444))
#define FIT_GARMIN_PRODUCT_EPIX_KOREA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2457))
#define FIT_GARMIN_PRODUCT_FENIX3_HR_CHN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2473))
#define FIT_GARMIN_PRODUCT_FENIX3_HR_TWN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2474))
#define FIT_GARMIN_PRODUCT_FENIX3_HR_JPN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2475))
#define FIT_GARMIN_PRODUCT_FENIX3_HR_SEA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2476))
#define FIT_GARMIN_PRODUCT_FENIX3_HR_KOR                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2477))
#define FIT_GARMIN_PRODUCT_NAUTIX                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 2496))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_HR_APAC                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 2497))
#define FIT_GARMIN_PRODUCT_FR35                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 2503))
#define FIT_GARMIN_PRODUCT_OREGON7XX_WW                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2512))
#define FIT_GARMIN_PRODUCT_EDGE_820                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2530))
#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE_820                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 2531))
#define FIT_GARMIN_PRODUCT_FR735XT_APAC                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2533))
#define FIT_GARMIN_PRODUCT_FR735XT_JAPAN                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 2534))
#define FIT_GARMIN_PRODUCT_FENIX5S                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 2544))
#define FIT_GARMIN_PRODUCT_D2_BRAVO_TITANIUM                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 2547))
#define FIT_GARMIN_PRODUCT_VARIA_UT800                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2567)) // Varia UT 800 SW
#define FIT_GARMIN_PRODUCT_RUNNING_DYNAMICS_POD                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 2593))
#define FIT_GARMIN_PRODUCT_EDGE_820_CHINA                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2599))
#define FIT_GARMIN_PRODUCT_EDGE_820_JAPAN                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2600))
#define FIT_GARMIN_PRODUCT_FENIX5X                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 2604))
#define FIT_GARMIN_PRODUCT_VIVO_FIT_JR                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2606))
#define FIT_GARMIN_PRODUCT_VIVO_SMART3                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2622))
#define FIT_GARMIN_PRODUCT_VIVO_SPORT                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2623))
#define FIT_GARMIN_PRODUCT_EDGE_820_TAIWAN                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 2628))
#define FIT_GARMIN_PRODUCT_EDGE_820_KOREA                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2629))
#define FIT_GARMIN_PRODUCT_EDGE_820_SEA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2630))
#define FIT_GARMIN_PRODUCT_FR35_HEBREW                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2650))
#define FIT_GARMIN_PRODUCT_APPROACH_S60                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2656))
#define FIT_GARMIN_PRODUCT_FR35_APAC                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2667))
#define FIT_GARMIN_PRODUCT_FR35_JAPAN                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2668))
#define FIT_GARMIN_PRODUCT_FENIX3_CHRONOS_ASIA                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 2675))
#define FIT_GARMIN_PRODUCT_VIRB_360                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2687))
#define FIT_GARMIN_PRODUCT_FR935                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2691))
#define FIT_GARMIN_PRODUCT_FENIX5                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 2697))
#define FIT_GARMIN_PRODUCT_VIVOACTIVE3                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2700))
#define FIT_GARMIN_PRODUCT_FR235_CHINA_NFC                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 2733))
#define FIT_GARMIN_PRODUCT_FORETREX_601_701                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 2769))
#define FIT_GARMIN_PRODUCT_VIVO_MOVE_HR                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2772))
#define FIT_GARMIN_PRODUCT_EDGE_1030                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2713))
#define FIT_GARMIN_PRODUCT_FR35_SEA                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2727))
#define FIT_GARMIN_PRODUCT_VECTOR_3                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2787))
#define FIT_GARMIN_PRODUCT_FENIX5_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2796))
#define FIT_GARMIN_PRODUCT_FENIX5S_ASIA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2797))
#define FIT_GARMIN_PRODUCT_FENIX5X_ASIA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2798))
#define FIT_GARMIN_PRODUCT_APPROACH_Z80                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2806))
#define FIT_GARMIN_PRODUCT_FR35_KOREA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2814))
#define FIT_GARMIN_PRODUCT_D2CHARLIE                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2819))
#define FIT_GARMIN_PRODUCT_VIVO_SMART3_APAC                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 2831))
#define FIT_GARMIN_PRODUCT_VIVO_SPORT_APAC                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 2832))
#define FIT_GARMIN_PRODUCT_FR935_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 2833))
#define FIT_GARMIN_PRODUCT_DESCENT                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 2859))
#define FIT_GARMIN_PRODUCT_VIVO_FIT4                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2878))
#define FIT_GARMIN_PRODUCT_FR645                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 2886))
#define FIT_GARMIN_PRODUCT_FR645M                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 2888))
#define FIT_GARMIN_PRODUCT_FR30                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 2891))
#define FIT_GARMIN_PRODUCT_FENIX5S_PLUS                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2900))
#define FIT_GARMIN_PRODUCT_EDGE_130                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 2909))
#define FIT_GARMIN_PRODUCT_EDGE_1030_ASIA                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2924))
#define FIT_GARMIN_PRODUCT_VIVOSMART_4                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 2927))
#define FIT_GARMIN_PRODUCT_VIVO_MOVE_HR_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 2945))
#define FIT_GARMIN_PRODUCT_APPROACH_X10                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 2962))
#define FIT_GARMIN_PRODUCT_FR30_ASIA                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 2977))
#define FIT_GARMIN_PRODUCT_VIVOACTIVE3M_W                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 2988))
#define FIT_GARMIN_PRODUCT_FR645_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3003))
#define FIT_GARMIN_PRODUCT_FR645M_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3004))
#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3011))
#define FIT_GARMIN_PRODUCT_GPSMAP66                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 3028))
#define FIT_GARMIN_PRODUCT_APPROACH_S10                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3049))
#define FIT_GARMIN_PRODUCT_VIVOACTIVE3M_L                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 3066))
#define FIT_GARMIN_PRODUCT_FR245                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 3076))
#define FIT_GARMIN_PRODUCT_FR245_MUSIC                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3077))
#define FIT_GARMIN_PRODUCT_APPROACH_G80                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3085))
#define FIT_GARMIN_PRODUCT_EDGE_130_ASIA                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 3092))
#define FIT_GARMIN_PRODUCT_EDGE_1030_BONTRAGER                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 3095))
#define FIT_GARMIN_PRODUCT_FENIX5_PLUS                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3110))
#define FIT_GARMIN_PRODUCT_FENIX5X_PLUS                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3111))
#define FIT_GARMIN_PRODUCT_EDGE_520_PLUS                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 3112))
#define FIT_GARMIN_PRODUCT_FR945                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 3113))
#define FIT_GARMIN_PRODUCT_EDGE_530                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 3121))
#define FIT_GARMIN_PRODUCT_EDGE_830                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 3122))
#define FIT_GARMIN_PRODUCT_INSTINCT_ESPORTS                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 3126))
#define FIT_GARMIN_PRODUCT_FENIX5S_PLUS_APAC                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3134))
#define FIT_GARMIN_PRODUCT_FENIX5X_PLUS_APAC                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3135))
#define FIT_GARMIN_PRODUCT_EDGE_520_PLUS_APAC                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 3142))
#define FIT_GARMIN_PRODUCT_DESCENT_T1                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3143))
#define FIT_GARMIN_PRODUCT_FR235L_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3144))
#define FIT_GARMIN_PRODUCT_FR245_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3145))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE3M_APAC                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 3163))
#define FIT_GARMIN_PRODUCT_GEN3_BSM                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 3192)) // gen3 bike speed sensor
#define FIT_GARMIN_PRODUCT_GEN3_BCM                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 3193)) // gen3 bike cadence sensor
#define FIT_GARMIN_PRODUCT_VIVO_SMART4_ASIA                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 3218))
#define FIT_GARMIN_PRODUCT_VIVOACTIVE4_SMALL                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3224))
#define FIT_GARMIN_PRODUCT_VIVOACTIVE4_LARGE                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3225))
#define FIT_GARMIN_PRODUCT_VENU                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 3226))
#define FIT_GARMIN_PRODUCT_MARQ_DRIVER                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3246))
#define FIT_GARMIN_PRODUCT_MARQ_AVIATOR                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3247))
#define FIT_GARMIN_PRODUCT_MARQ_CAPTAIN                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3248))
#define FIT_GARMIN_PRODUCT_MARQ_COMMANDER                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 3249))
#define FIT_GARMIN_PRODUCT_MARQ_EXPEDITION                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 3250))
#define FIT_GARMIN_PRODUCT_MARQ_ATHLETE                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3251))
#define FIT_GARMIN_PRODUCT_DESCENT_MK2                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3258))
#define FIT_GARMIN_PRODUCT_FR45                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 3282))
#define FIT_GARMIN_PRODUCT_GPSMAP66I                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 3284))
#define FIT_GARMIN_PRODUCT_FENIX6S_SPORT                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 3287))
#define FIT_GARMIN_PRODUCT_FENIX6S                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 3288))
#define FIT_GARMIN_PRODUCT_FENIX6_SPORT                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3289))
#define FIT_GARMIN_PRODUCT_FENIX6                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 3290))
#define FIT_GARMIN_PRODUCT_FENIX6X                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 3291))
#define FIT_GARMIN_PRODUCT_HRM_DUAL                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 3299)) // HRM-Dual
#define FIT_GARMIN_PRODUCT_HRM_PRO                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 3300)) // HRM-Pro
#define FIT_GARMIN_PRODUCT_VIVO_MOVE3_PREMIUM                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 3308))
#define FIT_GARMIN_PRODUCT_APPROACH_S40                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3314))
#define FIT_GARMIN_PRODUCT_FR245M_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3321))
#define FIT_GARMIN_PRODUCT_EDGE_530_APAC                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 3349))
#define FIT_GARMIN_PRODUCT_EDGE_830_APAC                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 3350))
#define FIT_GARMIN_PRODUCT_VIVO_MOVE3                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3378))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE4_SMALL_ASIA                               (FIT_CAST(FIT_GARMIN_PRODUCT, 3387))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE4_LARGE_ASIA                               (FIT_CAST(FIT_GARMIN_PRODUCT, 3388))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE4_OLED_ASIA                                (FIT_CAST(FIT_GARMIN_PRODUCT, 3389))
#define FIT_GARMIN_PRODUCT_SWIM2                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 3405))
#define FIT_GARMIN_PRODUCT_MARQ_DRIVER_ASIA                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 3420))
#define FIT_GARMIN_PRODUCT_MARQ_AVIATOR_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3421))
#define FIT_GARMIN_PRODUCT_VIVO_MOVE3_ASIA                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 3422))
#define FIT_GARMIN_PRODUCT_FR945_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3441))
#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE3T_CHN                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3446))
#define FIT_GARMIN_PRODUCT_MARQ_CAPTAIN_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3448))
#define FIT_GARMIN_PRODUCT_MARQ_COMMANDER_ASIA                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 3449))
#define FIT_GARMIN_PRODUCT_MARQ_EXPEDITION_ASIA                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 3450))
#define FIT_GARMIN_PRODUCT_MARQ_ATHLETE_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3451))
#define FIT_GARMIN_PRODUCT_INDEX_SMART_SCALE_2                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 3461))
#define FIT_GARMIN_PRODUCT_INSTINCT_SOLAR                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 3466))
#define FIT_GARMIN_PRODUCT_FR45_ASIA                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 3469))
#define FIT_GARMIN_PRODUCT_VIVOACTIVE3_DAIMLER                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 3473))
#define FIT_GARMIN_PRODUCT_LEGACY_REY                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3498))
#define FIT_GARMIN_PRODUCT_LEGACY_DARTH_VADER                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 3499))
#define FIT_GARMIN_PRODUCT_LEGACY_CAPTAIN_MARVEL                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 3500))
#define FIT_GARMIN_PRODUCT_LEGACY_FIRST_AVENGER                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 3501))
#define FIT_GARMIN_PRODUCT_FENIX6S_SPORT_ASIA                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 3512))
#define FIT_GARMIN_PRODUCT_FENIX6S_ASIA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3513))
#define FIT_GARMIN_PRODUCT_FENIX6_SPORT_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3514))
#define FIT_GARMIN_PRODUCT_FENIX6_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3515))
#define FIT_GARMIN_PRODUCT_FENIX6X_ASIA                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3516))
#define FIT_GARMIN_PRODUCT_LEGACY_CAPTAIN_MARVEL_ASIA                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3535))
#define FIT_GARMIN_PRODUCT_LEGACY_FIRST_AVENGER_ASIA                             (FIT_CAST(FIT_GARMIN_PRODUCT, 3536))
#define FIT_GARMIN_PRODUCT_LEGACY_REY_ASIA                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 3537))
#define FIT_GARMIN_PRODUCT_LEGACY_DARTH_VADER_ASIA                               (FIT_CAST(FIT_GARMIN_PRODUCT, 3538))
#define FIT_GARMIN_PRODUCT_DESCENT_MK2S                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3542))
#define FIT_GARMIN_PRODUCT_EDGE_130_PLUS                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 3558))
#define FIT_GARMIN_PRODUCT_EDGE_1030_PLUS                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 3570))
#define FIT_GARMIN_PRODUCT_RALLY_200                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 3578)) // Rally 100/200 Power Meter Series
#define FIT_GARMIN_PRODUCT_FR745                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 3589))
#define FIT_GARMIN_PRODUCT_VENUSQ_MUSIC                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3596))
#define FIT_GARMIN_PRODUCT_VENUSQ_MUSIC_V2                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 3599))
#define FIT_GARMIN_PRODUCT_VENUSQ                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 3600))
#define FIT_GARMIN_PRODUCT_LILY                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 3615))
#define FIT_GARMIN_PRODUCT_MARQ_ADVENTURER                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 3624))
#define FIT_GARMIN_PRODUCT_ENDURO                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 3638))
#define FIT_GARMIN_PRODUCT_SWIM2_APAC                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3639))
#define FIT_GARMIN_PRODUCT_MARQ_ADVENTURER_ASIA                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 3648))
#define FIT_GARMIN_PRODUCT_FR945_LTE                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 3652))
#define FIT_GARMIN_PRODUCT_DESCENT_MK2_ASIA                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 3702)) // Mk2 and Mk2i
#define FIT_GARMIN_PRODUCT_VENU2                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 3703))
#define FIT_GARMIN_PRODUCT_VENU2S                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 3704))
#define FIT_GARMIN_PRODUCT_VENU_DAIMLER_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3737))
#define FIT_GARMIN_PRODUCT_MARQ_GOLFER                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3739))
#define FIT_GARMIN_PRODUCT_VENU_DAIMLER                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3740))
#define FIT_GARMIN_PRODUCT_FR745_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3794))
#define FIT_GARMIN_PRODUCT_VARIA_RCT715                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3808))
#define FIT_GARMIN_PRODUCT_LILY_ASIA                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 3809))
#define FIT_GARMIN_PRODUCT_EDGE_1030_PLUS_ASIA                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 3812))
#define FIT_GARMIN_PRODUCT_EDGE_130_PLUS_ASIA                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 3813))
#define FIT_GARMIN_PRODUCT_APPROACH_S12                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3823))
#define FIT_GARMIN_PRODUCT_ENDURO_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3872))
#define FIT_GARMIN_PRODUCT_VENUSQ_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3837))
#define FIT_GARMIN_PRODUCT_EDGE_1040                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 3843))
#define FIT_GARMIN_PRODUCT_MARQ_GOLFER_ASIA                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 3850))
#define FIT_GARMIN_PRODUCT_VENU2_PLUS                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3851))
#define FIT_GARMIN_PRODUCT_GNSS                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 3865)) // Airoha AG3335M Family
#define FIT_GARMIN_PRODUCT_FR55                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 3869))
#define FIT_GARMIN_PRODUCT_INSTINCT_2                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3888))
#define FIT_GARMIN_PRODUCT_INSTINCT_2S                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3889))
#define FIT_GARMIN_PRODUCT_FENIX7S                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 3905))
#define FIT_GARMIN_PRODUCT_FENIX7                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 3906))
#define FIT_GARMIN_PRODUCT_FENIX7X                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 3907))
#define FIT_GARMIN_PRODUCT_FENIX7S_APAC                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3908))
#define FIT_GARMIN_PRODUCT_FENIX7_APAC                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3909))
#define FIT_GARMIN_PRODUCT_FENIX7X_APAC                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3910))
#define FIT_GARMIN_PRODUCT_APPROACH_G12                                          (FIT_CAST(FIT_GARMIN_PRODUCT,  3927))
#define FIT_GARMIN_PRODUCT_DESCENT_MK2S_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3930))
#define FIT_GARMIN_PRODUCT_APPROACH_S42                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 3934))
#define FIT_GARMIN_PRODUCT_EPIX_GEN2                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 3943))
#define FIT_GARMIN_PRODUCT_EPIX_GEN2_APAC                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 3944))
#define FIT_GARMIN_PRODUCT_VENU2S_ASIA                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3949))
#define FIT_GARMIN_PRODUCT_VENU2_ASIA                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 3950))
#define FIT_GARMIN_PRODUCT_FR945_LTE_ASIA                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 3978))
#define FIT_GARMIN_PRODUCT_VIVO_MOVE_SPORT                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 3982))
#define FIT_GARMIN_PRODUCT_VIVOMOVE_TREND                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 3983))
#define FIT_GARMIN_PRODUCT_APPROACH_S12_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3986))
#define FIT_GARMIN_PRODUCT_FR255_MUSIC                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3990))
#define FIT_GARMIN_PRODUCT_FR255_SMALL_MUSIC                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 3991))
#define FIT_GARMIN_PRODUCT_FR255                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 3992))
#define FIT_GARMIN_PRODUCT_FR255_SMALL                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 3993))
#define FIT_GARMIN_PRODUCT_APPROACH_G12_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT,  4001))
#define FIT_GARMIN_PRODUCT_APPROACH_S42_ASIA                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 4002))
#define FIT_GARMIN_PRODUCT_DESCENT_G1                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 4005))
#define FIT_GARMIN_PRODUCT_VENU2_PLUS_ASIA                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 4017))
#define FIT_GARMIN_PRODUCT_FR955                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 4024))
#define FIT_GARMIN_PRODUCT_FR55_ASIA                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 4033))
#define FIT_GARMIN_PRODUCT_EDGE_540                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 4061))
#define FIT_GARMIN_PRODUCT_EDGE_840                                              (FIT_CAST(FIT_GARMIN_PRODUCT, 4062))
#define FIT_GARMIN_PRODUCT_VIVOSMART_5                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4063))
#define FIT_GARMIN_PRODUCT_INSTINCT_2_ASIA                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 4071))
#define FIT_GARMIN_PRODUCT_MARQ_GEN2                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 4105)) // Adventurer, Athlete, Captain, Golfer
#define FIT_GARMIN_PRODUCT_VENUSQ2                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 4115))
#define FIT_GARMIN_PRODUCT_VENUSQ2MUSIC                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 4116))
#define FIT_GARMIN_PRODUCT_MARQ_GEN2_AVIATOR                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 4124))
#define FIT_GARMIN_PRODUCT_D2_AIR_X10                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 4125))
#define FIT_GARMIN_PRODUCT_HRM_PRO_PLUS                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 4130))
#define FIT_GARMIN_PRODUCT_DESCENT_G1_ASIA                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 4132))
#define FIT_GARMIN_PRODUCT_TACTIX7                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 4135))
#define FIT_GARMIN_PRODUCT_INSTINCT_CROSSOVER                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 4155))
#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE2                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 4169))
#define FIT_GARMIN_PRODUCT_DESCENT_MK3                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4222))
#define FIT_GARMIN_PRODUCT_DESCENT_MK3I                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 4223))
#define FIT_GARMIN_PRODUCT_APPROACH_S70                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 4233))
#define FIT_GARMIN_PRODUCT_FR265_LARGE                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4257))
#define FIT_GARMIN_PRODUCT_FR265_SMALL                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4258))
#define FIT_GARMIN_PRODUCT_VENU3                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 4260))
#define FIT_GARMIN_PRODUCT_VENU3S                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 4261))
#define FIT_GARMIN_PRODUCT_TACX_NEO_SMART                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 4265)) // Neo Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_NEO2_SMART                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 4266)) // Neo 2 Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_NEO2_T_SMART                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 4267)) // Neo 2T Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_NEO_SMART_BIKE                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 4268)) // Neo Smart Bike, Tacx
#define FIT_GARMIN_PRODUCT_TACX_SATORI_SMART                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 4269)) // Satori Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_FLOW_SMART                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 4270)) // Flow Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_VORTEX_SMART                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 4271)) // Vortex Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_BUSHIDO_SMART                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 4272)) // Bushido Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_GENIUS_SMART                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 4273)) // Genius Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_FLUX_FLUX_S_SMART                                (FIT_CAST(FIT_GARMIN_PRODUCT, 4274)) // Flux/Flux S Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_FLUX2_SMART                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 4275)) // Flux 2 Smart, Tacx
#define FIT_GARMIN_PRODUCT_TACX_MAGNUM                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4276)) // Magnum, Tacx
#define FIT_GARMIN_PRODUCT_EDGE_1040_ASIA                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 4305))
#define FIT_GARMIN_PRODUCT_EPIX_GEN2_PRO_42                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 4312))
#define FIT_GARMIN_PRODUCT_EPIX_GEN2_PRO_47                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 4313))
#define FIT_GARMIN_PRODUCT_EPIX_GEN2_PRO_51                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 4314))
#define FIT_GARMIN_PRODUCT_FR965                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 4315))
#define FIT_GARMIN_PRODUCT_ENDURO2                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 4341))
#define FIT_GARMIN_PRODUCT_FENIX7S_PRO_SOLAR                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 4374))
#define FIT_GARMIN_PRODUCT_FENIX7_PRO_SOLAR                                      (FIT_CAST(FIT_GARMIN_PRODUCT, 4375))
#define FIT_GARMIN_PRODUCT_FENIX7X_PRO_SOLAR                                     (FIT_CAST(FIT_GARMIN_PRODUCT, 4376))
#define FIT_GARMIN_PRODUCT_LILY2                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 4380))
#define FIT_GARMIN_PRODUCT_INSTINCT_2X                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4394))
#define FIT_GARMIN_PRODUCT_VIVOACTIVE5                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4426))
#define FIT_GARMIN_PRODUCT_FR165                                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 4432))
#define FIT_GARMIN_PRODUCT_FR165_MUSIC                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4433))
#define FIT_GARMIN_PRODUCT_EDGE_1050                                             (FIT_CAST(FIT_GARMIN_PRODUCT, 4440))
#define FIT_GARMIN_PRODUCT_DESCENT_T2                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 4442))
#define FIT_GARMIN_PRODUCT_HRM_FIT                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 4446))
#define FIT_GARMIN_PRODUCT_MARQ_GEN2_COMMANDER                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 4472))
#define FIT_GARMIN_PRODUCT_LILY_ATHLETE                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 4477)) // aka the Lily 2 Active
#define FIT_GARMIN_PRODUCT_FENIX8_SOLAR                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 4532))
#define FIT_GARMIN_PRODUCT_FENIX8_SOLAR_LARGE                                    (FIT_CAST(FIT_GARMIN_PRODUCT, 4533))
#define FIT_GARMIN_PRODUCT_FENIX8_SMALL                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 4534))
#define FIT_GARMIN_PRODUCT_FENIX8                                                (FIT_CAST(FIT_GARMIN_PRODUCT, 4536))
#define FIT_GARMIN_PRODUCT_D2_MACH1_PRO                                          (FIT_CAST(FIT_GARMIN_PRODUCT, 4556))
#define FIT_GARMIN_PRODUCT_ENDURO3                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 4575))
#define FIT_GARMIN_PRODUCT_INSTINCTE_40MM                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 4583))
#define FIT_GARMIN_PRODUCT_INSTINCTE_45MM                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 4584))
#define FIT_GARMIN_PRODUCT_INSTINCT3_SOLAR_45MM                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 4585))
#define FIT_GARMIN_PRODUCT_INSTINCT3_AMOLED_45MM                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 4586))
#define FIT_GARMIN_PRODUCT_INSTINCT3_AMOLED_50MM                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 4587))
#define FIT_GARMIN_PRODUCT_DESCENT_G2                                            (FIT_CAST(FIT_GARMIN_PRODUCT, 4588))
#define FIT_GARMIN_PRODUCT_HRM_200                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 4606))
#define FIT_GARMIN_PRODUCT_VIVOACTIVE6                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4625))
#define FIT_GARMIN_PRODUCT_APPROACHS44                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4647))
#define FIT_GARMIN_PRODUCT_APPROACHS50                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 4656))
#define FIT_GARMIN_PRODUCT_FENIX_E                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 4666))
#define FIT_GARMIN_PRODUCT_INSTINCT3_SOLAR_50MM                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 4759))
#define FIT_GARMIN_PRODUCT_TACTIX8_AMOLED                                        (FIT_CAST(FIT_GARMIN_PRODUCT, 4775))
#define FIT_GARMIN_PRODUCT_TACTIX8_SOLAR                                         (FIT_CAST(FIT_GARMIN_PRODUCT, 4776))
#define FIT_GARMIN_PRODUCT_SDM4                                                  (FIT_CAST(FIT_GARMIN_PRODUCT, 10007)) // SDM4 footpod
#define FIT_GARMIN_PRODUCT_EDGE_REMOTE                                           (FIT_CAST(FIT_GARMIN_PRODUCT, 10014))
#define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_WIN                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 20533))
#define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_MAC                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 20534))
#define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_MAC_CATALYST                        (FIT_CAST(FIT_GARMIN_PRODUCT, 20565))
#define FIT_GARMIN_PRODUCT_TRAINING_CENTER                                       (FIT_CAST(FIT_GARMIN_PRODUCT, 20119))
#define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_ANDROID                             (FIT_CAST(FIT_GARMIN_PRODUCT, 30045))
#define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_IOS                                 (FIT_CAST(FIT_GARMIN_PRODUCT, 30046))
#define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_LEGACY                              (FIT_CAST(FIT_GARMIN_PRODUCT, 30047))
#define FIT_GARMIN_PRODUCT_CONNECTIQ_SIMULATOR                                   (FIT_CAST(FIT_GARMIN_PRODUCT, 65531))
#define FIT_GARMIN_PRODUCT_ANDROID_ANTPLUS_PLUGIN                                (FIT_CAST(FIT_GARMIN_PRODUCT, 65532))
#define FIT_GARMIN_PRODUCT_CONNECT                                               (FIT_CAST(FIT_GARMIN_PRODUCT, 65534)) // Garmin Connect website
#define FIT_GARMIN_PRODUCT_COUNT                                                 462

typedef FIT_UINT8 FIT_ANTPLUS_DEVICE_TYPE;
#define FIT_ANTPLUS_DEVICE_TYPE_INVALID                                          FIT_UINT8_INVALID
#define FIT_ANTPLUS_DEVICE_TYPE_ANTFS                                            (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 1))
#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_POWER                                       (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 11))
#define FIT_ANTPLUS_DEVICE_TYPE_ENVIRONMENT_SENSOR_LEGACY                        (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 12))
#define FIT_ANTPLUS_DEVICE_TYPE_MULTI_SPORT_SPEED_DISTANCE                       (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 15))
#define FIT_ANTPLUS_DEVICE_TYPE_CONTROL                                          (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 16))
#define FIT_ANTPLUS_DEVICE_TYPE_FITNESS_EQUIPMENT                                (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 17))
#define FIT_ANTPLUS_DEVICE_TYPE_BLOOD_PRESSURE                                   (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 18))
#define FIT_ANTPLUS_DEVICE_TYPE_GEOCACHE_NODE                                    (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 19))
#define FIT_ANTPLUS_DEVICE_TYPE_LIGHT_ELECTRIC_VEHICLE                           (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 20))
#define FIT_ANTPLUS_DEVICE_TYPE_ENV_SENSOR                                       (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 25))
#define FIT_ANTPLUS_DEVICE_TYPE_RACQUET                                          (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 26))
#define FIT_ANTPLUS_DEVICE_TYPE_CONTROL_HUB                                      (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 27))
#define FIT_ANTPLUS_DEVICE_TYPE_MUSCLE_OXYGEN                                    (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 31))
#define FIT_ANTPLUS_DEVICE_TYPE_SHIFTING                                         (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 34))
#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_LIGHT_MAIN                                  (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 35))
#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_LIGHT_SHARED                                (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 36))
#define FIT_ANTPLUS_DEVICE_TYPE_EXD                                              (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 38))
#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_RADAR                                       (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 40))
#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_AERO                                        (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 46))
#define FIT_ANTPLUS_DEVICE_TYPE_WEIGHT_SCALE                                     (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 119))
#define FIT_ANTPLUS_DEVICE_TYPE_HEART_RATE                                       (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 120))
#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_SPEED_CADENCE                               (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 121))
#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_CADENCE                                     (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 122))
#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_SPEED                                       (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 123))
#define FIT_ANTPLUS_DEVICE_TYPE_STRIDE_SPEED_DISTANCE                            (FIT_CAST(FIT_ANTPLUS_DEVICE_TYPE, 124))
#define FIT_ANTPLUS_DEVICE_TYPE_COUNT                                            25

typedef FIT_ENUM FIT_ANT_NETWORK;
#define FIT_ANT_NETWORK_INVALID                                                  FIT_ENUM_INVALID
#define FIT_ANT_NETWORK_PUBLIC                                                   (FIT_CAST(FIT_ANT_NETWORK, 0))
#define FIT_ANT_NETWORK_ANTPLUS                                                  (FIT_CAST(FIT_ANT_NETWORK, 1))
#define FIT_ANT_NETWORK_ANTFS                                                    (FIT_CAST(FIT_ANT_NETWORK, 2))
#define FIT_ANT_NETWORK_PRIVATE                                                  (FIT_CAST(FIT_ANT_NETWORK, 3))
#define FIT_ANT_NETWORK_COUNT                                                    4

typedef FIT_UINT32Z FIT_WORKOUT_CAPABILITIES;
#define FIT_WORKOUT_CAPABILITIES_INVALID                                         FIT_UINT32Z_INVALID
#define FIT_WORKOUT_CAPABILITIES_INTERVAL                                        (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000001))
#define FIT_WORKOUT_CAPABILITIES_CUSTOM                                          (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000002))
#define FIT_WORKOUT_CAPABILITIES_FITNESS_EQUIPMENT                               (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000004))
#define FIT_WORKOUT_CAPABILITIES_FIRSTBEAT                                       (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000008))
#define FIT_WORKOUT_CAPABILITIES_NEW_LEAF                                        (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000010))
#define FIT_WORKOUT_CAPABILITIES_TCX                                             (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000020)) // For backwards compatibility. Watch should add missing id fields then clear flag.
#define FIT_WORKOUT_CAPABILITIES_SPEED                                           (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000080)) // Speed source required for workout step.
#define FIT_WORKOUT_CAPABILITIES_HEART_RATE                                      (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000100)) // Heart rate source required for workout step.
#define FIT_WORKOUT_CAPABILITIES_DISTANCE                                        (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000200)) // Distance source required for workout step.
#define FIT_WORKOUT_CAPABILITIES_CADENCE                                         (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000400)) // Cadence source required for workout step.
#define FIT_WORKOUT_CAPABILITIES_POWER                                           (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00000800)) // Power source required for workout step.
#define FIT_WORKOUT_CAPABILITIES_GRADE                                           (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00001000)) // Grade source required for workout step.
#define FIT_WORKOUT_CAPABILITIES_RESISTANCE                                      (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00002000)) // Resistance source required for workout step.
#define FIT_WORKOUT_CAPABILITIES_PROTECTED                                       (FIT_CAST(FIT_WORKOUT_CAPABILITIES, 0x00004000))
#define FIT_WORKOUT_CAPABILITIES_COUNT                                           14

typedef FIT_UINT8 FIT_BATTERY_STATUS;
#define FIT_BATTERY_STATUS_INVALID                                               FIT_UINT8_INVALID
#define FIT_BATTERY_STATUS_NEW                                                   (FIT_CAST(FIT_BATTERY_STATUS, 1))
#define FIT_BATTERY_STATUS_GOOD                                                  (FIT_CAST(FIT_BATTERY_STATUS, 2))
#define FIT_BATTERY_STATUS_OK                                                    (FIT_CAST(FIT_BATTERY_STATUS, 3))
#define FIT_BATTERY_STATUS_LOW                                                   (FIT_CAST(FIT_BATTERY_STATUS, 4))
#define FIT_BATTERY_STATUS_CRITICAL                                              (FIT_CAST(FIT_BATTERY_STATUS, 5))
#define FIT_BATTERY_STATUS_CHARGING                                              (FIT_CAST(FIT_BATTERY_STATUS, 6))
#define FIT_BATTERY_STATUS_UNKNOWN                                               (FIT_CAST(FIT_BATTERY_STATUS, 7))
#define FIT_BATTERY_STATUS_COUNT                                                 7

typedef FIT_ENUM FIT_HR_TYPE;
#define FIT_HR_TYPE_INVALID                                                      FIT_ENUM_INVALID
#define FIT_HR_TYPE_NORMAL                                                       (FIT_CAST(FIT_HR_TYPE, 0))
#define FIT_HR_TYPE_IRREGULAR                                                    (FIT_CAST(FIT_HR_TYPE, 1))
#define FIT_HR_TYPE_COUNT                                                        2

typedef FIT_UINT32Z FIT_COURSE_CAPABILITIES;
#define FIT_COURSE_CAPABILITIES_INVALID                                          FIT_UINT32Z_INVALID
#define FIT_COURSE_CAPABILITIES_PROCESSED                                        (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000001))
#define FIT_COURSE_CAPABILITIES_VALID                                            (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000002))
#define FIT_COURSE_CAPABILITIES_TIME                                             (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000004))
#define FIT_COURSE_CAPABILITIES_DISTANCE                                         (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000008))
#define FIT_COURSE_CAPABILITIES_POSITION                                         (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000010))
#define FIT_COURSE_CAPABILITIES_HEART_RATE                                       (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000020))
#define FIT_COURSE_CAPABILITIES_POWER                                            (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000040))
#define FIT_COURSE_CAPABILITIES_CADENCE                                          (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000080))
#define FIT_COURSE_CAPABILITIES_TRAINING                                         (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000100))
#define FIT_COURSE_CAPABILITIES_NAVIGATION                                       (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000200))
#define FIT_COURSE_CAPABILITIES_BIKEWAY                                          (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00000400))
#define FIT_COURSE_CAPABILITIES_AVIATION                                         (FIT_CAST(FIT_COURSE_CAPABILITIES, 0x00001000)) // Denote course files to be used as flight plans
#define FIT_COURSE_CAPABILITIES_COUNT                                            12

typedef FIT_UINT16 FIT_WEIGHT;
#define FIT_WEIGHT_INVALID                                                       FIT_UINT16_INVALID
#define FIT_WEIGHT_CALCULATING                                                   (FIT_CAST(FIT_WEIGHT, 0xFFFE))
#define FIT_WEIGHT_COUNT                                                         1

typedef FIT_UINT32 FIT_WORKOUT_HR; // 0 - 100 indicates% of max hr; >100 indicates bpm (255 max) plus 100
#define FIT_WORKOUT_HR_INVALID                                                   FIT_UINT32_INVALID
#define FIT_WORKOUT_HR_BPM_OFFSET                                                (FIT_CAST(FIT_WORKOUT_HR, 100))
#define FIT_WORKOUT_HR_COUNT                                                     1

typedef FIT_UINT32 FIT_WORKOUT_POWER; // 0 - 1000 indicates % of functional threshold power; >1000 indicates watts plus 1000.
#define FIT_WORKOUT_POWER_INVALID                                                FIT_UINT32_INVALID
#define FIT_WORKOUT_POWER_WATTS_OFFSET                                           (FIT_CAST(FIT_WORKOUT_POWER, 1000))
#define FIT_WORKOUT_POWER_COUNT                                                  1

typedef FIT_ENUM FIT_BP_STATUS;
#define FIT_BP_STATUS_INVALID                                                    FIT_ENUM_INVALID
#define FIT_BP_STATUS_NO_ERROR                                                   (FIT_CAST(FIT_BP_STATUS, 0))
#define FIT_BP_STATUS_ERROR_INCOMPLETE_DATA                                      (FIT_CAST(FIT_BP_STATUS, 1))
#define FIT_BP_STATUS_ERROR_NO_MEASUREMENT                                       (FIT_CAST(FIT_BP_STATUS, 2))
#define FIT_BP_STATUS_ERROR_DATA_OUT_OF_RANGE                                    (FIT_CAST(FIT_BP_STATUS, 3))
#define FIT_BP_STATUS_ERROR_IRREGULAR_HEART_RATE                                 (FIT_CAST(FIT_BP_STATUS, 4))
#define FIT_BP_STATUS_COUNT                                                      5

typedef FIT_UINT16 FIT_USER_LOCAL_ID;
#define FIT_USER_LOCAL_ID_INVALID                                                FIT_UINT16_INVALID
#define FIT_USER_LOCAL_ID_LOCAL_MIN                                              (FIT_CAST(FIT_USER_LOCAL_ID, 0x0000))
#define FIT_USER_LOCAL_ID_LOCAL_MAX                                              (FIT_CAST(FIT_USER_LOCAL_ID, 0x000F))
#define FIT_USER_LOCAL_ID_STATIONARY_MIN                                         (FIT_CAST(FIT_USER_LOCAL_ID, 0x0010))
#define FIT_USER_LOCAL_ID_STATIONARY_MAX                                         (FIT_CAST(FIT_USER_LOCAL_ID, 0x00FF))
#define FIT_USER_LOCAL_ID_PORTABLE_MIN                                           (FIT_CAST(FIT_USER_LOCAL_ID, 0x0100))
#define FIT_USER_LOCAL_ID_PORTABLE_MAX                                           (FIT_CAST(FIT_USER_LOCAL_ID, 0xFFFE))
#define FIT_USER_LOCAL_ID_COUNT                                                  6

typedef FIT_ENUM FIT_SWIM_STROKE;
#define FIT_SWIM_STROKE_INVALID                                                  FIT_ENUM_INVALID
#define FIT_SWIM_STROKE_FREESTYLE                                                (FIT_CAST(FIT_SWIM_STROKE, 0))
#define FIT_SWIM_STROKE_BACKSTROKE                                               (FIT_CAST(FIT_SWIM_STROKE, 1))
#define FIT_SWIM_STROKE_BREASTSTROKE                                             (FIT_CAST(FIT_SWIM_STROKE, 2))
#define FIT_SWIM_STROKE_BUTTERFLY                                                (FIT_CAST(FIT_SWIM_STROKE, 3))
#define FIT_SWIM_STROKE_DRILL                                                    (FIT_CAST(FIT_SWIM_STROKE, 4))
#define FIT_SWIM_STROKE_MIXED                                                    (FIT_CAST(FIT_SWIM_STROKE, 5))
#define FIT_SWIM_STROKE_IM                                                       (FIT_CAST(FIT_SWIM_STROKE, 6)) // IM is a mixed interval containing the same number of lengths for each of: Butterfly, Backstroke, Breaststroke, Freestyle, swam in that order.
#define FIT_SWIM_STROKE_IM_BY_ROUND                                              (FIT_CAST(FIT_SWIM_STROKE, 7)) // For repeated workout steps, a new individual medly stroke is used for each round.
#define FIT_SWIM_STROKE_RIMO                                                     (FIT_CAST(FIT_SWIM_STROKE, 8)) // Reverse IM Order
#define FIT_SWIM_STROKE_COUNT                                                    9

typedef FIT_ENUM FIT_ACTIVITY_TYPE;
#define FIT_ACTIVITY_TYPE_INVALID                                                FIT_ENUM_INVALID
#define FIT_ACTIVITY_TYPE_GENERIC                                                (FIT_CAST(FIT_ACTIVITY_TYPE, 0))
#define FIT_ACTIVITY_TYPE_RUNNING                                                (FIT_CAST(FIT_ACTIVITY_TYPE, 1))
#define FIT_ACTIVITY_TYPE_CYCLING                                                (FIT_CAST(FIT_ACTIVITY_TYPE, 2))
#define FIT_ACTIVITY_TYPE_TRANSITION                                             (FIT_CAST(FIT_ACTIVITY_TYPE, 3)) // Mulitsport transition
#define FIT_ACTIVITY_TYPE_FITNESS_EQUIPMENT                                      (FIT_CAST(FIT_ACTIVITY_TYPE, 4))
#define FIT_ACTIVITY_TYPE_SWIMMING                                               (FIT_CAST(FIT_ACTIVITY_TYPE, 5))
#define FIT_ACTIVITY_TYPE_WALKING                                                (FIT_CAST(FIT_ACTIVITY_TYPE, 6))
#define FIT_ACTIVITY_TYPE_SEDENTARY                                              (FIT_CAST(FIT_ACTIVITY_TYPE, 8))
#define FIT_ACTIVITY_TYPE_ALL                                                    (FIT_CAST(FIT_ACTIVITY_TYPE, 254)) // All is for goals only to include all sports.
#define FIT_ACTIVITY_TYPE_COUNT                                                  9

typedef FIT_ENUM FIT_ACTIVITY_SUBTYPE;
#define FIT_ACTIVITY_SUBTYPE_INVALID                                             FIT_ENUM_INVALID
#define FIT_ACTIVITY_SUBTYPE_GENERIC                                             (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 0))
#define FIT_ACTIVITY_SUBTYPE_TREADMILL                                           (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 1)) // Run
#define FIT_ACTIVITY_SUBTYPE_STREET                                              (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 2)) // Run
#define FIT_ACTIVITY_SUBTYPE_TRAIL                                               (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 3)) // Run
#define FIT_ACTIVITY_SUBTYPE_TRACK                                               (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 4)) // Run
#define FIT_ACTIVITY_SUBTYPE_SPIN                                                (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 5)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_INDOOR_CYCLING                                      (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 6)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_ROAD                                                (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 7)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_MOUNTAIN                                            (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 8)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_DOWNHILL                                            (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 9)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_RECUMBENT                                           (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 10)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_CYCLOCROSS                                          (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 11)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_HAND_CYCLING                                        (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 12)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_TRACK_CYCLING                                       (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 13)) // Cycling
#define FIT_ACTIVITY_SUBTYPE_INDOOR_ROWING                                       (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 14)) // Fitness Equipment
#define FIT_ACTIVITY_SUBTYPE_ELLIPTICAL                                          (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 15)) // Fitness Equipment
#define FIT_ACTIVITY_SUBTYPE_STAIR_CLIMBING                                      (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 16)) // Fitness Equipment
#define FIT_ACTIVITY_SUBTYPE_LAP_SWIMMING                                        (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 17)) // Swimming
#define FIT_ACTIVITY_SUBTYPE_OPEN_WATER                                          (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 18)) // Swimming
#define FIT_ACTIVITY_SUBTYPE_ALL                                                 (FIT_CAST(FIT_ACTIVITY_SUBTYPE, 254))
#define FIT_ACTIVITY_SUBTYPE_COUNT                                               20

typedef FIT_ENUM FIT_ACTIVITY_LEVEL;
#define FIT_ACTIVITY_LEVEL_INVALID                                               FIT_ENUM_INVALID
#define FIT_ACTIVITY_LEVEL_LOW                                                   (FIT_CAST(FIT_ACTIVITY_LEVEL, 0))
#define FIT_ACTIVITY_LEVEL_MEDIUM                                                (FIT_CAST(FIT_ACTIVITY_LEVEL, 1))
#define FIT_ACTIVITY_LEVEL_HIGH                                                  (FIT_CAST(FIT_ACTIVITY_LEVEL, 2))
#define FIT_ACTIVITY_LEVEL_COUNT                                                 3

typedef FIT_ENUM FIT_SIDE;
#define FIT_SIDE_INVALID                                                         FIT_ENUM_INVALID
#define FIT_SIDE_RIGHT                                                           (FIT_CAST(FIT_SIDE, 0))
#define FIT_SIDE_LEFT                                                            (FIT_CAST(FIT_SIDE, 1))
#define FIT_SIDE_COUNT                                                           2

typedef FIT_UINT8 FIT_LEFT_RIGHT_BALANCE;
#define FIT_LEFT_RIGHT_BALANCE_INVALID                                           FIT_UINT8_INVALID
#define FIT_LEFT_RIGHT_BALANCE_MASK                                              (FIT_CAST(FIT_LEFT_RIGHT_BALANCE, 0x7F)) // % contribution
#define FIT_LEFT_RIGHT_BALANCE_RIGHT                                             (FIT_CAST(FIT_LEFT_RIGHT_BALANCE, 0x80)) // data corresponds to right if set, otherwise unknown
#define FIT_LEFT_RIGHT_BALANCE_COUNT                                             2

typedef FIT_UINT16 FIT_LEFT_RIGHT_BALANCE_100;
#define FIT_LEFT_RIGHT_BALANCE_100_INVALID                                       FIT_UINT16_INVALID
#define FIT_LEFT_RIGHT_BALANCE_100_MASK                                          (FIT_CAST(FIT_LEFT_RIGHT_BALANCE_100, 0x3FFF)) // % contribution scaled by 100
#define FIT_LEFT_RIGHT_BALANCE_100_RIGHT                                         (FIT_CAST(FIT_LEFT_RIGHT_BALANCE_100, 0x8000)) // data corresponds to right if set, otherwise unknown
#define FIT_LEFT_RIGHT_BALANCE_100_COUNT                                         2

typedef FIT_ENUM FIT_LENGTH_TYPE;
#define FIT_LENGTH_TYPE_INVALID                                                  FIT_ENUM_INVALID
#define FIT_LENGTH_TYPE_IDLE                                                     (FIT_CAST(FIT_LENGTH_TYPE, 0)) // Rest period. Length with no strokes
#define FIT_LENGTH_TYPE_ACTIVE                                                   (FIT_CAST(FIT_LENGTH_TYPE, 1)) // Length with strokes.
#define FIT_LENGTH_TYPE_COUNT                                                    2

typedef FIT_ENUM FIT_DAY_OF_WEEK;
#define FIT_DAY_OF_WEEK_INVALID                                                  FIT_ENUM_INVALID
#define FIT_DAY_OF_WEEK_SUNDAY                                                   (FIT_CAST(FIT_DAY_OF_WEEK, 0))
#define FIT_DAY_OF_WEEK_MONDAY                                                   (FIT_CAST(FIT_DAY_OF_WEEK, 1))
#define FIT_DAY_OF_WEEK_TUESDAY                                                  (FIT_CAST(FIT_DAY_OF_WEEK, 2))
#define FIT_DAY_OF_WEEK_WEDNESDAY                                                (FIT_CAST(FIT_DAY_OF_WEEK, 3))
#define FIT_DAY_OF_WEEK_THURSDAY                                                 (FIT_CAST(FIT_DAY_OF_WEEK, 4))
#define FIT_DAY_OF_WEEK_FRIDAY                                                   (FIT_CAST(FIT_DAY_OF_WEEK, 5))
#define FIT_DAY_OF_WEEK_SATURDAY                                                 (FIT_CAST(FIT_DAY_OF_WEEK, 6))
#define FIT_DAY_OF_WEEK_COUNT                                                    7

typedef FIT_UINT32Z FIT_CONNECTIVITY_CAPABILITIES;
#define FIT_CONNECTIVITY_CAPABILITIES_INVALID                                    FIT_UINT32Z_INVALID
#define FIT_CONNECTIVITY_CAPABILITIES_BLUETOOTH                                  (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000001))
#define FIT_CONNECTIVITY_CAPABILITIES_BLUETOOTH_LE                               (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000002))
#define FIT_CONNECTIVITY_CAPABILITIES_ANT                                        (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000004))
#define FIT_CONNECTIVITY_CAPABILITIES_ACTIVITY_UPLOAD                            (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000008))
#define FIT_CONNECTIVITY_CAPABILITIES_COURSE_DOWNLOAD                            (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000010))
#define FIT_CONNECTIVITY_CAPABILITIES_WORKOUT_DOWNLOAD                           (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000020))
#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK                                 (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000040))
#define FIT_CONNECTIVITY_CAPABILITIES_WEATHER_CONDITIONS                         (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000080))
#define FIT_CONNECTIVITY_CAPABILITIES_WEATHER_ALERTS                             (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000100))
#define FIT_CONNECTIVITY_CAPABILITIES_GPS_EPHEMERIS_DOWNLOAD                     (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000200))
#define FIT_CONNECTIVITY_CAPABILITIES_EXPLICIT_ARCHIVE                           (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000400))
#define FIT_CONNECTIVITY_CAPABILITIES_SETUP_INCOMPLETE                           (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00000800))
#define FIT_CONNECTIVITY_CAPABILITIES_CONTINUE_SYNC_AFTER_SOFTWARE_UPDATE        (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00001000))
#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_APP_DOWNLOAD                    (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00002000))
#define FIT_CONNECTIVITY_CAPABILITIES_GOLF_COURSE_DOWNLOAD                       (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00004000))
#define FIT_CONNECTIVITY_CAPABILITIES_DEVICE_INITIATES_SYNC                      (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00008000)) // Indicates device is in control of initiating all syncs
#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WATCH_APP_DOWNLOAD              (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00010000))
#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WIDGET_DOWNLOAD                 (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00020000))
#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WATCH_FACE_DOWNLOAD             (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00040000))
#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_DATA_FIELD_DOWNLOAD             (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00080000))
#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_APP_MANAGMENT                   (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00100000)) // Device supports delete and reorder of apps via GCM
#define FIT_CONNECTIVITY_CAPABILITIES_SWING_SENSOR                               (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00200000))
#define FIT_CONNECTIVITY_CAPABILITIES_SWING_SENSOR_REMOTE                        (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00400000))
#define FIT_CONNECTIVITY_CAPABILITIES_INCIDENT_DETECTION                         (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x00800000)) // Device supports incident detection
#define FIT_CONNECTIVITY_CAPABILITIES_AUDIO_PROMPTS                              (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x01000000))
#define FIT_CONNECTIVITY_CAPABILITIES_WIFI_VERIFICATION                          (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x02000000)) // Device supports reporting wifi verification via GCM
#define FIT_CONNECTIVITY_CAPABILITIES_TRUE_UP                                    (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x04000000)) // Device supports True Up
#define FIT_CONNECTIVITY_CAPABILITIES_FIND_MY_WATCH                              (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x08000000)) // Device supports Find My Watch
#define FIT_CONNECTIVITY_CAPABILITIES_REMOTE_MANUAL_SYNC                         (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x10000000))
#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK_AUTO_START                      (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x20000000)) // Device supports LiveTrack auto start
#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK_MESSAGING                       (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x40000000)) // Device supports LiveTrack Messaging
#define FIT_CONNECTIVITY_CAPABILITIES_INSTANT_INPUT                              (FIT_CAST(FIT_CONNECTIVITY_CAPABILITIES, 0x80000000)) // Device supports instant input feature
#define FIT_CONNECTIVITY_CAPABILITIES_COUNT                                      32

typedef FIT_ENUM FIT_WEATHER_REPORT;
#define FIT_WEATHER_REPORT_INVALID                                               FIT_ENUM_INVALID
#define FIT_WEATHER_REPORT_CURRENT                                               (FIT_CAST(FIT_WEATHER_REPORT, 0))
#define FIT_WEATHER_REPORT_FORECAST                                              (FIT_CAST(FIT_WEATHER_REPORT, 1)) // Deprecated use hourly_forecast instead
#define FIT_WEATHER_REPORT_HOURLY_FORECAST                                       (FIT_CAST(FIT_WEATHER_REPORT, 1))
#define FIT_WEATHER_REPORT_DAILY_FORECAST                                        (FIT_CAST(FIT_WEATHER_REPORT, 2))
#define FIT_WEATHER_REPORT_COUNT                                                 4

typedef FIT_ENUM FIT_WEATHER_STATUS;
#define FIT_WEATHER_STATUS_INVALID                                               FIT_ENUM_INVALID
#define FIT_WEATHER_STATUS_CLEAR                                                 (FIT_CAST(FIT_WEATHER_STATUS, 0))
#define FIT_WEATHER_STATUS_PARTLY_CLOUDY                                         (FIT_CAST(FIT_WEATHER_STATUS, 1))
#define FIT_WEATHER_STATUS_MOSTLY_CLOUDY                                         (FIT_CAST(FIT_WEATHER_STATUS, 2))
#define FIT_WEATHER_STATUS_RAIN                                                  (FIT_CAST(FIT_WEATHER_STATUS, 3))
#define FIT_WEATHER_STATUS_SNOW                                                  (FIT_CAST(FIT_WEATHER_STATUS, 4))
#define FIT_WEATHER_STATUS_WINDY                                                 (FIT_CAST(FIT_WEATHER_STATUS, 5))
#define FIT_WEATHER_STATUS_THUNDERSTORMS                                         (FIT_CAST(FIT_WEATHER_STATUS, 6))
#define FIT_WEATHER_STATUS_WINTRY_MIX                                            (FIT_CAST(FIT_WEATHER_STATUS, 7))
#define FIT_WEATHER_STATUS_FOG                                                   (FIT_CAST(FIT_WEATHER_STATUS, 8))
#define FIT_WEATHER_STATUS_HAZY                                                  (FIT_CAST(FIT_WEATHER_STATUS, 11))
#define FIT_WEATHER_STATUS_HAIL                                                  (FIT_CAST(FIT_WEATHER_STATUS, 12))
#define FIT_WEATHER_STATUS_SCATTERED_SHOWERS                                     (FIT_CAST(FIT_WEATHER_STATUS, 13))
#define FIT_WEATHER_STATUS_SCATTERED_THUNDERSTORMS                               (FIT_CAST(FIT_WEATHER_STATUS, 14))
#define FIT_WEATHER_STATUS_UNKNOWN_PRECIPITATION                                 (FIT_CAST(FIT_WEATHER_STATUS, 15))
#define FIT_WEATHER_STATUS_LIGHT_RAIN                                            (FIT_CAST(FIT_WEATHER_STATUS, 16))
#define FIT_WEATHER_STATUS_HEAVY_RAIN                                            (FIT_CAST(FIT_WEATHER_STATUS, 17))
#define FIT_WEATHER_STATUS_LIGHT_SNOW                                            (FIT_CAST(FIT_WEATHER_STATUS, 18))
#define FIT_WEATHER_STATUS_HEAVY_SNOW                                            (FIT_CAST(FIT_WEATHER_STATUS, 19))
#define FIT_WEATHER_STATUS_LIGHT_RAIN_SNOW                                       (FIT_CAST(FIT_WEATHER_STATUS, 20))
#define FIT_WEATHER_STATUS_HEAVY_RAIN_SNOW                                       (FIT_CAST(FIT_WEATHER_STATUS, 21))
#define FIT_WEATHER_STATUS_CLOUDY                                                (FIT_CAST(FIT_WEATHER_STATUS, 22))
#define FIT_WEATHER_STATUS_COUNT                                                 21

typedef FIT_ENUM FIT_WEATHER_SEVERITY;
#define FIT_WEATHER_SEVERITY_INVALID                                             FIT_ENUM_INVALID
#define FIT_WEATHER_SEVERITY_UNKNOWN                                             (FIT_CAST(FIT_WEATHER_SEVERITY, 0))
#define FIT_WEATHER_SEVERITY_WARNING                                             (FIT_CAST(FIT_WEATHER_SEVERITY, 1))
#define FIT_WEATHER_SEVERITY_WATCH                                               (FIT_CAST(FIT_WEATHER_SEVERITY, 2))
#define FIT_WEATHER_SEVERITY_ADVISORY                                            (FIT_CAST(FIT_WEATHER_SEVERITY, 3))
#define FIT_WEATHER_SEVERITY_STATEMENT                                           (FIT_CAST(FIT_WEATHER_SEVERITY, 4))
#define FIT_WEATHER_SEVERITY_COUNT                                               5

typedef FIT_ENUM FIT_WEATHER_SEVERE_TYPE;
#define FIT_WEATHER_SEVERE_TYPE_INVALID                                          FIT_ENUM_INVALID
#define FIT_WEATHER_SEVERE_TYPE_UNSPECIFIED                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 0))
#define FIT_WEATHER_SEVERE_TYPE_TORNADO                                          (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 1))
#define FIT_WEATHER_SEVERE_TYPE_TSUNAMI                                          (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 2))
#define FIT_WEATHER_SEVERE_TYPE_HURRICANE                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 3))
#define FIT_WEATHER_SEVERE_TYPE_EXTREME_WIND                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 4))
#define FIT_WEATHER_SEVERE_TYPE_TYPHOON                                          (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 5))
#define FIT_WEATHER_SEVERE_TYPE_INLAND_HURRICANE                                 (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 6))
#define FIT_WEATHER_SEVERE_TYPE_HURRICANE_FORCE_WIND                             (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 7))
#define FIT_WEATHER_SEVERE_TYPE_WATERSPOUT                                       (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 8))
#define FIT_WEATHER_SEVERE_TYPE_SEVERE_THUNDERSTORM                              (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 9))
#define FIT_WEATHER_SEVERE_TYPE_WRECKHOUSE_WINDS                                 (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 10))
#define FIT_WEATHER_SEVERE_TYPE_LES_SUETES_WIND                                  (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 11))
#define FIT_WEATHER_SEVERE_TYPE_AVALANCHE                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 12))
#define FIT_WEATHER_SEVERE_TYPE_FLASH_FLOOD                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 13))
#define FIT_WEATHER_SEVERE_TYPE_TROPICAL_STORM                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 14))
#define FIT_WEATHER_SEVERE_TYPE_INLAND_TROPICAL_STORM                            (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 15))
#define FIT_WEATHER_SEVERE_TYPE_BLIZZARD                                         (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 16))
#define FIT_WEATHER_SEVERE_TYPE_ICE_STORM                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 17))
#define FIT_WEATHER_SEVERE_TYPE_FREEZING_RAIN                                    (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 18))
#define FIT_WEATHER_SEVERE_TYPE_DEBRIS_FLOW                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 19))
#define FIT_WEATHER_SEVERE_TYPE_FLASH_FREEZE                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 20))
#define FIT_WEATHER_SEVERE_TYPE_DUST_STORM                                       (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 21))
#define FIT_WEATHER_SEVERE_TYPE_HIGH_WIND                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 22))
#define FIT_WEATHER_SEVERE_TYPE_WINTER_STORM                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 23))
#define FIT_WEATHER_SEVERE_TYPE_HEAVY_FREEZING_SPRAY                             (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 24))
#define FIT_WEATHER_SEVERE_TYPE_EXTREME_COLD                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 25))
#define FIT_WEATHER_SEVERE_TYPE_WIND_CHILL                                       (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 26))
#define FIT_WEATHER_SEVERE_TYPE_COLD_WAVE                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 27))
#define FIT_WEATHER_SEVERE_TYPE_HEAVY_SNOW_ALERT                                 (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 28))
#define FIT_WEATHER_SEVERE_TYPE_LAKE_EFFECT_BLOWING_SNOW                         (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 29))
#define FIT_WEATHER_SEVERE_TYPE_SNOW_SQUALL                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 30))
#define FIT_WEATHER_SEVERE_TYPE_LAKE_EFFECT_SNOW                                 (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 31))
#define FIT_WEATHER_SEVERE_TYPE_WINTER_WEATHER                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 32))
#define FIT_WEATHER_SEVERE_TYPE_SLEET                                            (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 33))
#define FIT_WEATHER_SEVERE_TYPE_SNOWFALL                                         (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 34))
#define FIT_WEATHER_SEVERE_TYPE_SNOW_AND_BLOWING_SNOW                            (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 35))
#define FIT_WEATHER_SEVERE_TYPE_BLOWING_SNOW                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 36))
#define FIT_WEATHER_SEVERE_TYPE_SNOW_ALERT                                       (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 37))
#define FIT_WEATHER_SEVERE_TYPE_ARCTIC_OUTFLOW                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 38))
#define FIT_WEATHER_SEVERE_TYPE_FREEZING_DRIZZLE                                 (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 39))
#define FIT_WEATHER_SEVERE_TYPE_STORM                                            (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 40))
#define FIT_WEATHER_SEVERE_TYPE_STORM_SURGE                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 41))
#define FIT_WEATHER_SEVERE_TYPE_RAINFALL                                         (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 42))
#define FIT_WEATHER_SEVERE_TYPE_AREAL_FLOOD                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 43))
#define FIT_WEATHER_SEVERE_TYPE_COASTAL_FLOOD                                    (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 44))
#define FIT_WEATHER_SEVERE_TYPE_LAKESHORE_FLOOD                                  (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 45))
#define FIT_WEATHER_SEVERE_TYPE_EXCESSIVE_HEAT                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 46))
#define FIT_WEATHER_SEVERE_TYPE_HEAT                                             (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 47))
#define FIT_WEATHER_SEVERE_TYPE_WEATHER                                          (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 48))
#define FIT_WEATHER_SEVERE_TYPE_HIGH_HEAT_AND_HUMIDITY                           (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 49))
#define FIT_WEATHER_SEVERE_TYPE_HUMIDEX_AND_HEALTH                               (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 50))
#define FIT_WEATHER_SEVERE_TYPE_HUMIDEX                                          (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 51))
#define FIT_WEATHER_SEVERE_TYPE_GALE                                             (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 52))
#define FIT_WEATHER_SEVERE_TYPE_FREEZING_SPRAY                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 53))
#define FIT_WEATHER_SEVERE_TYPE_SPECIAL_MARINE                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 54))
#define FIT_WEATHER_SEVERE_TYPE_SQUALL                                           (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 55))
#define FIT_WEATHER_SEVERE_TYPE_STRONG_WIND                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 56))
#define FIT_WEATHER_SEVERE_TYPE_LAKE_WIND                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 57))
#define FIT_WEATHER_SEVERE_TYPE_MARINE_WEATHER                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 58))
#define FIT_WEATHER_SEVERE_TYPE_WIND                                             (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 59))
#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_HAZARDOUS_SEAS                       (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 60))
#define FIT_WEATHER_SEVERE_TYPE_HAZARDOUS_SEAS                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 61))
#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 62))
#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_WINDS                                (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 63))
#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_ROUGH_BAR                            (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 64))
#define FIT_WEATHER_SEVERE_TYPE_HIGH_WATER_LEVEL                                 (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 65))
#define FIT_WEATHER_SEVERE_TYPE_ASHFALL                                          (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 66))
#define FIT_WEATHER_SEVERE_TYPE_FREEZING_FOG                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 67))
#define FIT_WEATHER_SEVERE_TYPE_DENSE_FOG                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 68))
#define FIT_WEATHER_SEVERE_TYPE_DENSE_SMOKE                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 69))
#define FIT_WEATHER_SEVERE_TYPE_BLOWING_DUST                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 70))
#define FIT_WEATHER_SEVERE_TYPE_HARD_FREEZE                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 71))
#define FIT_WEATHER_SEVERE_TYPE_FREEZE                                           (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 72))
#define FIT_WEATHER_SEVERE_TYPE_FROST                                            (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 73))
#define FIT_WEATHER_SEVERE_TYPE_FIRE_WEATHER                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 74))
#define FIT_WEATHER_SEVERE_TYPE_FLOOD                                            (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 75))
#define FIT_WEATHER_SEVERE_TYPE_RIP_TIDE                                         (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 76))
#define FIT_WEATHER_SEVERE_TYPE_HIGH_SURF                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 77))
#define FIT_WEATHER_SEVERE_TYPE_SMOG                                             (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 78))
#define FIT_WEATHER_SEVERE_TYPE_AIR_QUALITY                                      (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 79))
#define FIT_WEATHER_SEVERE_TYPE_BRISK_WIND                                       (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 80))
#define FIT_WEATHER_SEVERE_TYPE_AIR_STAGNATION                                   (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 81))
#define FIT_WEATHER_SEVERE_TYPE_LOW_WATER                                        (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 82))
#define FIT_WEATHER_SEVERE_TYPE_HYDROLOGICAL                                     (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 83))
#define FIT_WEATHER_SEVERE_TYPE_SPECIAL_WEATHER                                  (FIT_CAST(FIT_WEATHER_SEVERE_TYPE, 84))
#define FIT_WEATHER_SEVERE_TYPE_COUNT                                            85

typedef FIT_UINT32 FIT_TIME_INTO_DAY; // number of seconds into the day since 00:00:00 UTC
#define FIT_TIME_INTO_DAY_INVALID                                                FIT_UINT32_INVALID
#define FIT_TIME_INTO_DAY_COUNT                                                  0

typedef FIT_UINT32 FIT_LOCALTIME_INTO_DAY; // number of seconds into the day since local 00:00:00
#define FIT_LOCALTIME_INTO_DAY_INVALID                                           FIT_UINT32_INVALID
#define FIT_LOCALTIME_INTO_DAY_COUNT                                             0

typedef FIT_ENUM FIT_STROKE_TYPE;
#define FIT_STROKE_TYPE_INVALID                                                  FIT_ENUM_INVALID
#define FIT_STROKE_TYPE_NO_EVENT                                                 (FIT_CAST(FIT_STROKE_TYPE, 0))
#define FIT_STROKE_TYPE_OTHER                                                    (FIT_CAST(FIT_STROKE_TYPE, 1)) // stroke was detected but cannot be identified
#define FIT_STROKE_TYPE_SERVE                                                    (FIT_CAST(FIT_STROKE_TYPE, 2))
#define FIT_STROKE_TYPE_FOREHAND                                                 (FIT_CAST(FIT_STROKE_TYPE, 3))
#define FIT_STROKE_TYPE_BACKHAND                                                 (FIT_CAST(FIT_STROKE_TYPE, 4))
#define FIT_STROKE_TYPE_SMASH                                                    (FIT_CAST(FIT_STROKE_TYPE, 5))
#define FIT_STROKE_TYPE_COUNT                                                    6

typedef FIT_ENUM FIT_BODY_LOCATION;
#define FIT_BODY_LOCATION_INVALID                                                FIT_ENUM_INVALID
#define FIT_BODY_LOCATION_LEFT_LEG                                               (FIT_CAST(FIT_BODY_LOCATION, 0))
#define FIT_BODY_LOCATION_LEFT_CALF                                              (FIT_CAST(FIT_BODY_LOCATION, 1))
#define FIT_BODY_LOCATION_LEFT_SHIN                                              (FIT_CAST(FIT_BODY_LOCATION, 2))
#define FIT_BODY_LOCATION_LEFT_HAMSTRING                                         (FIT_CAST(FIT_BODY_LOCATION, 3))
#define FIT_BODY_LOCATION_LEFT_QUAD                                              (FIT_CAST(FIT_BODY_LOCATION, 4))
#define FIT_BODY_LOCATION_LEFT_GLUTE                                             (FIT_CAST(FIT_BODY_LOCATION, 5))
#define FIT_BODY_LOCATION_RIGHT_LEG                                              (FIT_CAST(FIT_BODY_LOCATION, 6))
#define FIT_BODY_LOCATION_RIGHT_CALF                                             (FIT_CAST(FIT_BODY_LOCATION, 7))
#define FIT_BODY_LOCATION_RIGHT_SHIN                                             (FIT_CAST(FIT_BODY_LOCATION, 8))
#define FIT_BODY_LOCATION_RIGHT_HAMSTRING                                        (FIT_CAST(FIT_BODY_LOCATION, 9))
#define FIT_BODY_LOCATION_RIGHT_QUAD                                             (FIT_CAST(FIT_BODY_LOCATION, 10))
#define FIT_BODY_LOCATION_RIGHT_GLUTE                                            (FIT_CAST(FIT_BODY_LOCATION, 11))
#define FIT_BODY_LOCATION_TORSO_BACK                                             (FIT_CAST(FIT_BODY_LOCATION, 12))
#define FIT_BODY_LOCATION_LEFT_LOWER_BACK                                        (FIT_CAST(FIT_BODY_LOCATION, 13))
#define FIT_BODY_LOCATION_LEFT_UPPER_BACK                                        (FIT_CAST(FIT_BODY_LOCATION, 14))
#define FIT_BODY_LOCATION_RIGHT_LOWER_BACK                                       (FIT_CAST(FIT_BODY_LOCATION, 15))
#define FIT_BODY_LOCATION_RIGHT_UPPER_BACK                                       (FIT_CAST(FIT_BODY_LOCATION, 16))
#define FIT_BODY_LOCATION_TORSO_FRONT                                            (FIT_CAST(FIT_BODY_LOCATION, 17))
#define FIT_BODY_LOCATION_LEFT_ABDOMEN                                           (FIT_CAST(FIT_BODY_LOCATION, 18))
#define FIT_BODY_LOCATION_LEFT_CHEST                                             (FIT_CAST(FIT_BODY_LOCATION, 19))
#define FIT_BODY_LOCATION_RIGHT_ABDOMEN                                          (FIT_CAST(FIT_BODY_LOCATION, 20))
#define FIT_BODY_LOCATION_RIGHT_CHEST                                            (FIT_CAST(FIT_BODY_LOCATION, 21))
#define FIT_BODY_LOCATION_LEFT_ARM                                               (FIT_CAST(FIT_BODY_LOCATION, 22))
#define FIT_BODY_LOCATION_LEFT_SHOULDER                                          (FIT_CAST(FIT_BODY_LOCATION, 23))
#define FIT_BODY_LOCATION_LEFT_BICEP                                             (FIT_CAST(FIT_BODY_LOCATION, 24))
#define FIT_BODY_LOCATION_LEFT_TRICEP                                            (FIT_CAST(FIT_BODY_LOCATION, 25))
#define FIT_BODY_LOCATION_LEFT_BRACHIORADIALIS                                   (FIT_CAST(FIT_BODY_LOCATION, 26)) // Left anterior forearm
#define FIT_BODY_LOCATION_LEFT_FOREARM_EXTENSORS                                 (FIT_CAST(FIT_BODY_LOCATION, 27)) // Left posterior forearm
#define FIT_BODY_LOCATION_RIGHT_ARM                                              (FIT_CAST(FIT_BODY_LOCATION, 28))
#define FIT_BODY_LOCATION_RIGHT_SHOULDER                                         (FIT_CAST(FIT_BODY_LOCATION, 29))
#define FIT_BODY_LOCATION_RIGHT_BICEP                                            (FIT_CAST(FIT_BODY_LOCATION, 30))
#define FIT_BODY_LOCATION_RIGHT_TRICEP                                           (FIT_CAST(FIT_BODY_LOCATION, 31))
#define FIT_BODY_LOCATION_RIGHT_BRACHIORADIALIS                                  (FIT_CAST(FIT_BODY_LOCATION, 32)) // Right anterior forearm
#define FIT_BODY_LOCATION_RIGHT_FOREARM_EXTENSORS                                (FIT_CAST(FIT_BODY_LOCATION, 33)) // Right posterior forearm
#define FIT_BODY_LOCATION_NECK                                                   (FIT_CAST(FIT_BODY_LOCATION, 34))
#define FIT_BODY_LOCATION_THROAT                                                 (FIT_CAST(FIT_BODY_LOCATION, 35))
#define FIT_BODY_LOCATION_WAIST_MID_BACK                                         (FIT_CAST(FIT_BODY_LOCATION, 36))
#define FIT_BODY_LOCATION_WAIST_FRONT                                            (FIT_CAST(FIT_BODY_LOCATION, 37))
#define FIT_BODY_LOCATION_WAIST_LEFT                                             (FIT_CAST(FIT_BODY_LOCATION, 38))
#define FIT_BODY_LOCATION_WAIST_RIGHT                                            (FIT_CAST(FIT_BODY_LOCATION, 39))
#define FIT_BODY_LOCATION_COUNT                                                  40

typedef FIT_ENUM FIT_SEGMENT_LAP_STATUS;
#define FIT_SEGMENT_LAP_STATUS_INVALID                                           FIT_ENUM_INVALID
#define FIT_SEGMENT_LAP_STATUS_END                                               (FIT_CAST(FIT_SEGMENT_LAP_STATUS, 0))
#define FIT_SEGMENT_LAP_STATUS_FAIL                                              (FIT_CAST(FIT_SEGMENT_LAP_STATUS, 1))
#define FIT_SEGMENT_LAP_STATUS_COUNT                                             2

typedef FIT_ENUM FIT_SEGMENT_LEADERBOARD_TYPE;
#define FIT_SEGMENT_LEADERBOARD_TYPE_INVALID                                     FIT_ENUM_INVALID
#define FIT_SEGMENT_LEADERBOARD_TYPE_OVERALL                                     (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 0))
#define FIT_SEGMENT_LEADERBOARD_TYPE_PERSONAL_BEST                               (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 1))
#define FIT_SEGMENT_LEADERBOARD_TYPE_CONNECTIONS                                 (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 2))
#define FIT_SEGMENT_LEADERBOARD_TYPE_GROUP                                       (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 3))
#define FIT_SEGMENT_LEADERBOARD_TYPE_CHALLENGER                                  (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 4))
#define FIT_SEGMENT_LEADERBOARD_TYPE_KOM                                         (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 5))
#define FIT_SEGMENT_LEADERBOARD_TYPE_QOM                                         (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 6))
#define FIT_SEGMENT_LEADERBOARD_TYPE_PR                                          (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 7))
#define FIT_SEGMENT_LEADERBOARD_TYPE_GOAL                                        (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 8))
#define FIT_SEGMENT_LEADERBOARD_TYPE_CARROT                                      (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 9))
#define FIT_SEGMENT_LEADERBOARD_TYPE_CLUB_LEADER                                 (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 10))
#define FIT_SEGMENT_LEADERBOARD_TYPE_RIVAL                                       (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 11))
#define FIT_SEGMENT_LEADERBOARD_TYPE_LAST                                        (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 12))
#define FIT_SEGMENT_LEADERBOARD_TYPE_RECENT_BEST                                 (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 13))
#define FIT_SEGMENT_LEADERBOARD_TYPE_COURSE_RECORD                               (FIT_CAST(FIT_SEGMENT_LEADERBOARD_TYPE, 14))
#define FIT_SEGMENT_LEADERBOARD_TYPE_COUNT                                       15

typedef FIT_ENUM FIT_SEGMENT_DELETE_STATUS;
#define FIT_SEGMENT_DELETE_STATUS_INVALID                                        FIT_ENUM_INVALID
#define FIT_SEGMENT_DELETE_STATUS_DO_NOT_DELETE                                  (FIT_CAST(FIT_SEGMENT_DELETE_STATUS, 0))
#define FIT_SEGMENT_DELETE_STATUS_DELETE_ONE                                     (FIT_CAST(FIT_SEGMENT_DELETE_STATUS, 1))
#define FIT_SEGMENT_DELETE_STATUS_DELETE_ALL                                     (FIT_CAST(FIT_SEGMENT_DELETE_STATUS, 2))
#define FIT_SEGMENT_DELETE_STATUS_COUNT                                          3

typedef FIT_ENUM FIT_SEGMENT_SELECTION_TYPE;
#define FIT_SEGMENT_SELECTION_TYPE_INVALID                                       FIT_ENUM_INVALID
#define FIT_SEGMENT_SELECTION_TYPE_STARRED                                       (FIT_CAST(FIT_SEGMENT_SELECTION_TYPE, 0))
#define FIT_SEGMENT_SELECTION_TYPE_SUGGESTED                                     (FIT_CAST(FIT_SEGMENT_SELECTION_TYPE, 1))
#define FIT_SEGMENT_SELECTION_TYPE_COUNT                                         2

typedef FIT_ENUM FIT_SOURCE_TYPE;
#define FIT_SOURCE_TYPE_INVALID                                                  FIT_ENUM_INVALID
#define FIT_SOURCE_TYPE_ANT                                                      (FIT_CAST(FIT_SOURCE_TYPE, 0)) // External device connected with ANT
#define FIT_SOURCE_TYPE_ANTPLUS                                                  (FIT_CAST(FIT_SOURCE_TYPE, 1)) // External device connected with ANT+
#define FIT_SOURCE_TYPE_BLUETOOTH                                                (FIT_CAST(FIT_SOURCE_TYPE, 2)) // External device connected with BT
#define FIT_SOURCE_TYPE_BLUETOOTH_LOW_ENERGY                                     (FIT_CAST(FIT_SOURCE_TYPE, 3)) // External device connected with BLE
#define FIT_SOURCE_TYPE_WIFI                                                     (FIT_CAST(FIT_SOURCE_TYPE, 4)) // External device connected with Wifi
#define FIT_SOURCE_TYPE_LOCAL                                                    (FIT_CAST(FIT_SOURCE_TYPE, 5)) // Onboard device
#define FIT_SOURCE_TYPE_COUNT                                                    6

typedef FIT_UINT8 FIT_LOCAL_DEVICE_TYPE;
#define FIT_LOCAL_DEVICE_TYPE_INVALID                                            FIT_UINT8_INVALID
#define FIT_LOCAL_DEVICE_TYPE_GPS                                                (FIT_CAST(FIT_LOCAL_DEVICE_TYPE, 0)) // Onboard gps receiver
#define FIT_LOCAL_DEVICE_TYPE_GLONASS                                            (FIT_CAST(FIT_LOCAL_DEVICE_TYPE, 1)) // Onboard glonass receiver
#define FIT_LOCAL_DEVICE_TYPE_GPS_GLONASS                                        (FIT_CAST(FIT_LOCAL_DEVICE_TYPE, 2)) // Onboard gps glonass receiver
#define FIT_LOCAL_DEVICE_TYPE_ACCELEROMETER                                      (FIT_CAST(FIT_LOCAL_DEVICE_TYPE, 3)) // Onboard sensor
#define FIT_LOCAL_DEVICE_TYPE_BAROMETER                                          (FIT_CAST(FIT_LOCAL_DEVICE_TYPE, 4)) // Onboard sensor
#define FIT_LOCAL_DEVICE_TYPE_TEMPERATURE                                        (FIT_CAST(FIT_LOCAL_DEVICE_TYPE, 5)) // Onboard sensor
#define FIT_LOCAL_DEVICE_TYPE_WHR                                                (FIT_CAST(FIT_LOCAL_DEVICE_TYPE, 10)) // Onboard wrist HR sensor
#define FIT_LOCAL_DEVICE_TYPE_SENSOR_HUB                                         (FIT_CAST(FIT_LOCAL_DEVICE_TYPE, 12)) // Onboard software package
#define FIT_LOCAL_DEVICE_TYPE_COUNT                                              8

typedef FIT_UINT8 FIT_BLE_DEVICE_TYPE;
#define FIT_BLE_DEVICE_TYPE_INVALID                                              FIT_UINT8_INVALID
#define FIT_BLE_DEVICE_TYPE_CONNECTED_GPS                                        (FIT_CAST(FIT_BLE_DEVICE_TYPE, 0)) // GPS that is provided over a proprietary bluetooth service
#define FIT_BLE_DEVICE_TYPE_HEART_RATE                                           (FIT_CAST(FIT_BLE_DEVICE_TYPE, 1))
#define FIT_BLE_DEVICE_TYPE_BIKE_POWER                                           (FIT_CAST(FIT_BLE_DEVICE_TYPE, 2))
#define FIT_BLE_DEVICE_TYPE_BIKE_SPEED_CADENCE                                   (FIT_CAST(FIT_BLE_DEVICE_TYPE, 3))
#define FIT_BLE_DEVICE_TYPE_BIKE_SPEED                                           (FIT_CAST(FIT_BLE_DEVICE_TYPE, 4))
#define FIT_BLE_DEVICE_TYPE_BIKE_CADENCE                                         (FIT_CAST(FIT_BLE_DEVICE_TYPE, 5))
#define FIT_BLE_DEVICE_TYPE_FOOTPOD                                              (FIT_CAST(FIT_BLE_DEVICE_TYPE, 6))
#define FIT_BLE_DEVICE_TYPE_BIKE_TRAINER                                         (FIT_CAST(FIT_BLE_DEVICE_TYPE, 7)) // Indoor-Bike FTMS protocol
#define FIT_BLE_DEVICE_TYPE_COUNT                                                8

typedef FIT_UINT32Z FIT_ANT_CHANNEL_ID;
#define FIT_ANT_CHANNEL_ID_INVALID                                               FIT_UINT32Z_INVALID
#define FIT_ANT_CHANNEL_ID_ANT_EXTENDED_DEVICE_NUMBER_UPPER_NIBBLE               (FIT_CAST(FIT_ANT_CHANNEL_ID, 0xF0000000))
#define FIT_ANT_CHANNEL_ID_ANT_TRANSMISSION_TYPE_LOWER_NIBBLE                    (FIT_CAST(FIT_ANT_CHANNEL_ID, 0x0F000000))
#define FIT_ANT_CHANNEL_ID_ANT_DEVICE_TYPE                                       (FIT_CAST(FIT_ANT_CHANNEL_ID, 0x00FF0000))
#define FIT_ANT_CHANNEL_ID_ANT_DEVICE_NUMBER                                     (FIT_CAST(FIT_ANT_CHANNEL_ID, 0x0000FFFF))
#define FIT_ANT_CHANNEL_ID_COUNT                                                 4

typedef FIT_ENUM FIT_DISPLAY_ORIENTATION;
#define FIT_DISPLAY_ORIENTATION_INVALID                                          FIT_ENUM_INVALID
#define FIT_DISPLAY_ORIENTATION_AUTO                                             (FIT_CAST(FIT_DISPLAY_ORIENTATION, 0)) // automatic if the device supports it
#define FIT_DISPLAY_ORIENTATION_PORTRAIT                                         (FIT_CAST(FIT_DISPLAY_ORIENTATION, 1))
#define FIT_DISPLAY_ORIENTATION_LANDSCAPE                                        (FIT_CAST(FIT_DISPLAY_ORIENTATION, 2))
#define FIT_DISPLAY_ORIENTATION_PORTRAIT_FLIPPED                                 (FIT_CAST(FIT_DISPLAY_ORIENTATION, 3)) // portrait mode but rotated 180 degrees
#define FIT_DISPLAY_ORIENTATION_LANDSCAPE_FLIPPED                                (FIT_CAST(FIT_DISPLAY_ORIENTATION, 4)) // landscape mode but rotated 180 degrees
#define FIT_DISPLAY_ORIENTATION_COUNT                                            5

typedef FIT_ENUM FIT_WORKOUT_EQUIPMENT;
#define FIT_WORKOUT_EQUIPMENT_INVALID                                            FIT_ENUM_INVALID
#define FIT_WORKOUT_EQUIPMENT_NONE                                               (FIT_CAST(FIT_WORKOUT_EQUIPMENT, 0))
#define FIT_WORKOUT_EQUIPMENT_SWIM_FINS                                          (FIT_CAST(FIT_WORKOUT_EQUIPMENT, 1))
#define FIT_WORKOUT_EQUIPMENT_SWIM_KICKBOARD                                     (FIT_CAST(FIT_WORKOUT_EQUIPMENT, 2))
#define FIT_WORKOUT_EQUIPMENT_SWIM_PADDLES                                       (FIT_CAST(FIT_WORKOUT_EQUIPMENT, 3))
#define FIT_WORKOUT_EQUIPMENT_SWIM_PULL_BUOY                                     (FIT_CAST(FIT_WORKOUT_EQUIPMENT, 4))
#define FIT_WORKOUT_EQUIPMENT_SWIM_SNORKEL                                       (FIT_CAST(FIT_WORKOUT_EQUIPMENT, 5))
#define FIT_WORKOUT_EQUIPMENT_COUNT                                              6

typedef FIT_ENUM FIT_WATCHFACE_MODE;
#define FIT_WATCHFACE_MODE_INVALID                                               FIT_ENUM_INVALID
#define FIT_WATCHFACE_MODE_DIGITAL                                               (FIT_CAST(FIT_WATCHFACE_MODE, 0))
#define FIT_WATCHFACE_MODE_ANALOG                                                (FIT_CAST(FIT_WATCHFACE_MODE, 1))
#define FIT_WATCHFACE_MODE_CONNECT_IQ                                            (FIT_CAST(FIT_WATCHFACE_MODE, 2))
#define FIT_WATCHFACE_MODE_DISABLED                                              (FIT_CAST(FIT_WATCHFACE_MODE, 3))
#define FIT_WATCHFACE_MODE_COUNT                                                 4

typedef FIT_ENUM FIT_DIGITAL_WATCHFACE_LAYOUT;
#define FIT_DIGITAL_WATCHFACE_LAYOUT_INVALID                                     FIT_ENUM_INVALID
#define FIT_DIGITAL_WATCHFACE_LAYOUT_TRADITIONAL                                 (FIT_CAST(FIT_DIGITAL_WATCHFACE_LAYOUT, 0))
#define FIT_DIGITAL_WATCHFACE_LAYOUT_MODERN                                      (FIT_CAST(FIT_DIGITAL_WATCHFACE_LAYOUT, 1))
#define FIT_DIGITAL_WATCHFACE_LAYOUT_BOLD                                        (FIT_CAST(FIT_DIGITAL_WATCHFACE_LAYOUT, 2))
#define FIT_DIGITAL_WATCHFACE_LAYOUT_COUNT                                       3

typedef FIT_ENUM FIT_ANALOG_WATCHFACE_LAYOUT;
#define FIT_ANALOG_WATCHFACE_LAYOUT_INVALID                                      FIT_ENUM_INVALID
#define FIT_ANALOG_WATCHFACE_LAYOUT_MINIMAL                                      (FIT_CAST(FIT_ANALOG_WATCHFACE_LAYOUT, 0))
#define FIT_ANALOG_WATCHFACE_LAYOUT_TRADITIONAL                                  (FIT_CAST(FIT_ANALOG_WATCHFACE_LAYOUT, 1))
#define FIT_ANALOG_WATCHFACE_LAYOUT_MODERN                                       (FIT_CAST(FIT_ANALOG_WATCHFACE_LAYOUT, 2))
#define FIT_ANALOG_WATCHFACE_LAYOUT_COUNT                                        3

typedef FIT_ENUM FIT_RIDER_POSITION_TYPE;
#define FIT_RIDER_POSITION_TYPE_INVALID                                          FIT_ENUM_INVALID
#define FIT_RIDER_POSITION_TYPE_SEATED                                           (FIT_CAST(FIT_RIDER_POSITION_TYPE, 0))
#define FIT_RIDER_POSITION_TYPE_STANDING                                         (FIT_CAST(FIT_RIDER_POSITION_TYPE, 1))
#define FIT_RIDER_POSITION_TYPE_TRANSITION_TO_SEATED                             (FIT_CAST(FIT_RIDER_POSITION_TYPE, 2))
#define FIT_RIDER_POSITION_TYPE_TRANSITION_TO_STANDING                           (FIT_CAST(FIT_RIDER_POSITION_TYPE, 3))
#define FIT_RIDER_POSITION_TYPE_COUNT                                            4

typedef FIT_ENUM FIT_POWER_PHASE_TYPE;
#define FIT_POWER_PHASE_TYPE_INVALID                                             FIT_ENUM_INVALID
#define FIT_POWER_PHASE_TYPE_POWER_PHASE_START_ANGLE                             (FIT_CAST(FIT_POWER_PHASE_TYPE, 0))
#define FIT_POWER_PHASE_TYPE_POWER_PHASE_END_ANGLE                               (FIT_CAST(FIT_POWER_PHASE_TYPE, 1))
#define FIT_POWER_PHASE_TYPE_POWER_PHASE_ARC_LENGTH                              (FIT_CAST(FIT_POWER_PHASE_TYPE, 2))
#define FIT_POWER_PHASE_TYPE_POWER_PHASE_CENTER                                  (FIT_CAST(FIT_POWER_PHASE_TYPE, 3))
#define FIT_POWER_PHASE_TYPE_COUNT                                               4

typedef FIT_ENUM FIT_CAMERA_EVENT_TYPE;
#define FIT_CAMERA_EVENT_TYPE_INVALID                                            FIT_ENUM_INVALID
#define FIT_CAMERA_EVENT_TYPE_VIDEO_START                                        (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 0)) // Start of video recording
#define FIT_CAMERA_EVENT_TYPE_VIDEO_SPLIT                                        (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 1)) // Mark of video file split (end of one file, beginning of the other)
#define FIT_CAMERA_EVENT_TYPE_VIDEO_END                                          (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 2)) // End of video recording
#define FIT_CAMERA_EVENT_TYPE_PHOTO_TAKEN                                        (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 3)) // Still photo taken
#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_START                          (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 4))
#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_SPLIT                          (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 5))
#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_END                            (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 6))
#define FIT_CAMERA_EVENT_TYPE_VIDEO_SPLIT_START                                  (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 7)) // Mark of video file split start
#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_SPLIT_START                    (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 8))
#define FIT_CAMERA_EVENT_TYPE_VIDEO_PAUSE                                        (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 11)) // Mark when a video recording has been paused
#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_PAUSE                          (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 12))
#define FIT_CAMERA_EVENT_TYPE_VIDEO_RESUME                                       (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 13)) // Mark when a video recording has been resumed
#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_RESUME                         (FIT_CAST(FIT_CAMERA_EVENT_TYPE, 14))
#define FIT_CAMERA_EVENT_TYPE_COUNT                                              13

typedef FIT_ENUM FIT_SENSOR_TYPE;
#define FIT_SENSOR_TYPE_INVALID                                                  FIT_ENUM_INVALID
#define FIT_SENSOR_TYPE_ACCELEROMETER                                            (FIT_CAST(FIT_SENSOR_TYPE, 0))
#define FIT_SENSOR_TYPE_GYROSCOPE                                                (FIT_CAST(FIT_SENSOR_TYPE, 1))
#define FIT_SENSOR_TYPE_COMPASS                                                  (FIT_CAST(FIT_SENSOR_TYPE, 2)) // Magnetometer
#define FIT_SENSOR_TYPE_BAROMETER                                                (FIT_CAST(FIT_SENSOR_TYPE, 3))
#define FIT_SENSOR_TYPE_COUNT                                                    4

typedef FIT_ENUM FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE;
#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_INVALID                               FIT_ENUM_INVALID
#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_AUTO                                  (FIT_CAST(FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE, 0))
#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_INDIVIDUAL                            (FIT_CAST(FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE, 4))
#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_HIGH_VISIBILITY                       (FIT_CAST(FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE, 5))
#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_TRAIL                                 (FIT_CAST(FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE, 6))
#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_COUNT                                 4

typedef FIT_UINT16 FIT_COMM_TIMEOUT_TYPE;
#define FIT_COMM_TIMEOUT_TYPE_INVALID                                            FIT_UINT16_INVALID
#define FIT_COMM_TIMEOUT_TYPE_WILDCARD_PAIRING_TIMEOUT                           (FIT_CAST(FIT_COMM_TIMEOUT_TYPE, 0)) // Timeout pairing to any device
#define FIT_COMM_TIMEOUT_TYPE_PAIRING_TIMEOUT                                    (FIT_CAST(FIT_COMM_TIMEOUT_TYPE, 1)) // Timeout pairing to previously paired device
#define FIT_COMM_TIMEOUT_TYPE_CONNECTION_LOST                                    (FIT_CAST(FIT_COMM_TIMEOUT_TYPE, 2)) // Temporary loss of communications
#define FIT_COMM_TIMEOUT_TYPE_CONNECTION_TIMEOUT                                 (FIT_CAST(FIT_COMM_TIMEOUT_TYPE, 3)) // Connection closed due to extended bad communications
#define FIT_COMM_TIMEOUT_TYPE_COUNT                                              4

typedef FIT_ENUM FIT_CAMERA_ORIENTATION_TYPE;
#define FIT_CAMERA_ORIENTATION_TYPE_INVALID                                      FIT_ENUM_INVALID
#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_0                         (FIT_CAST(FIT_CAMERA_ORIENTATION_TYPE, 0))
#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_90                        (FIT_CAST(FIT_CAMERA_ORIENTATION_TYPE, 1))
#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_180                       (FIT_CAST(FIT_CAMERA_ORIENTATION_TYPE, 2))
#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_270                       (FIT_CAST(FIT_CAMERA_ORIENTATION_TYPE, 3))
#define FIT_CAMERA_ORIENTATION_TYPE_COUNT                                        4

typedef FIT_ENUM FIT_ATTITUDE_STAGE;
#define FIT_ATTITUDE_STAGE_INVALID                                               FIT_ENUM_INVALID
#define FIT_ATTITUDE_STAGE_FAILED                                                (FIT_CAST(FIT_ATTITUDE_STAGE, 0))
#define FIT_ATTITUDE_STAGE_ALIGNING                                              (FIT_CAST(FIT_ATTITUDE_STAGE, 1))
#define FIT_ATTITUDE_STAGE_DEGRADED                                              (FIT_CAST(FIT_ATTITUDE_STAGE, 2))
#define FIT_ATTITUDE_STAGE_VALID                                                 (FIT_CAST(FIT_ATTITUDE_STAGE, 3))
#define FIT_ATTITUDE_STAGE_COUNT                                                 4

typedef FIT_UINT16 FIT_ATTITUDE_VALIDITY;
#define FIT_ATTITUDE_VALIDITY_INVALID                                            FIT_UINT16_INVALID
#define FIT_ATTITUDE_VALIDITY_TRACK_ANGLE_HEADING_VALID                          (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0001))
#define FIT_ATTITUDE_VALIDITY_PITCH_VALID                                        (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0002))
#define FIT_ATTITUDE_VALIDITY_ROLL_VALID                                         (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0004))
#define FIT_ATTITUDE_VALIDITY_LATERAL_BODY_ACCEL_VALID                           (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0008))
#define FIT_ATTITUDE_VALIDITY_NORMAL_BODY_ACCEL_VALID                            (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0010))
#define FIT_ATTITUDE_VALIDITY_TURN_RATE_VALID                                    (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0020))
#define FIT_ATTITUDE_VALIDITY_HW_FAIL                                            (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0040))
#define FIT_ATTITUDE_VALIDITY_MAG_INVALID                                        (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0080))
#define FIT_ATTITUDE_VALIDITY_NO_GPS                                             (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0100))
#define FIT_ATTITUDE_VALIDITY_GPS_INVALID                                        (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0200))
#define FIT_ATTITUDE_VALIDITY_SOLUTION_COASTING                                  (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0400))
#define FIT_ATTITUDE_VALIDITY_TRUE_TRACK_ANGLE                                   (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x0800))
#define FIT_ATTITUDE_VALIDITY_MAGNETIC_HEADING                                   (FIT_CAST(FIT_ATTITUDE_VALIDITY, 0x1000))
#define FIT_ATTITUDE_VALIDITY_COUNT                                              13

typedef FIT_ENUM FIT_AUTO_SYNC_FREQUENCY;
#define FIT_AUTO_SYNC_FREQUENCY_INVALID                                          FIT_ENUM_INVALID
#define FIT_AUTO_SYNC_FREQUENCY_NEVER                                            (FIT_CAST(FIT_AUTO_SYNC_FREQUENCY, 0))
#define FIT_AUTO_SYNC_FREQUENCY_OCCASIONALLY                                     (FIT_CAST(FIT_AUTO_SYNC_FREQUENCY, 1))
#define FIT_AUTO_SYNC_FREQUENCY_FREQUENT                                         (FIT_CAST(FIT_AUTO_SYNC_FREQUENCY, 2))
#define FIT_AUTO_SYNC_FREQUENCY_ONCE_A_DAY                                       (FIT_CAST(FIT_AUTO_SYNC_FREQUENCY, 3))
#define FIT_AUTO_SYNC_FREQUENCY_REMOTE                                           (FIT_CAST(FIT_AUTO_SYNC_FREQUENCY, 4))
#define FIT_AUTO_SYNC_FREQUENCY_COUNT                                            5

typedef FIT_ENUM FIT_EXD_LAYOUT;
#define FIT_EXD_LAYOUT_INVALID                                                   FIT_ENUM_INVALID
#define FIT_EXD_LAYOUT_FULL_SCREEN                                               (FIT_CAST(FIT_EXD_LAYOUT, 0))
#define FIT_EXD_LAYOUT_HALF_VERTICAL                                             (FIT_CAST(FIT_EXD_LAYOUT, 1))
#define FIT_EXD_LAYOUT_HALF_HORIZONTAL                                           (FIT_CAST(FIT_EXD_LAYOUT, 2))
#define FIT_EXD_LAYOUT_HALF_VERTICAL_RIGHT_SPLIT                                 (FIT_CAST(FIT_EXD_LAYOUT, 3))
#define FIT_EXD_LAYOUT_HALF_HORIZONTAL_BOTTOM_SPLIT                              (FIT_CAST(FIT_EXD_LAYOUT, 4))
#define FIT_EXD_LAYOUT_FULL_QUARTER_SPLIT                                        (FIT_CAST(FIT_EXD_LAYOUT, 5))
#define FIT_EXD_LAYOUT_HALF_VERTICAL_LEFT_SPLIT                                  (FIT_CAST(FIT_EXD_LAYOUT, 6))
#define FIT_EXD_LAYOUT_HALF_HORIZONTAL_TOP_SPLIT                                 (FIT_CAST(FIT_EXD_LAYOUT, 7))
#define FIT_EXD_LAYOUT_DYNAMIC                                                   (FIT_CAST(FIT_EXD_LAYOUT, 8)) // The EXD may display the configured concepts in any layout it sees fit.
#define FIT_EXD_LAYOUT_COUNT                                                     9

typedef FIT_ENUM FIT_EXD_DISPLAY_TYPE;
#define FIT_EXD_DISPLAY_TYPE_INVALID                                             FIT_ENUM_INVALID
#define FIT_EXD_DISPLAY_TYPE_NUMERICAL                                           (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 0))
#define FIT_EXD_DISPLAY_TYPE_SIMPLE                                              (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 1))
#define FIT_EXD_DISPLAY_TYPE_GRAPH                                               (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 2))
#define FIT_EXD_DISPLAY_TYPE_BAR                                                 (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 3))
#define FIT_EXD_DISPLAY_TYPE_CIRCLE_GRAPH                                        (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 4))
#define FIT_EXD_DISPLAY_TYPE_VIRTUAL_PARTNER                                     (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 5))
#define FIT_EXD_DISPLAY_TYPE_BALANCE                                             (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 6))
#define FIT_EXD_DISPLAY_TYPE_STRING_LIST                                         (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 7))
#define FIT_EXD_DISPLAY_TYPE_STRING                                              (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 8))
#define FIT_EXD_DISPLAY_TYPE_SIMPLE_DYNAMIC_ICON                                 (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 9))
#define FIT_EXD_DISPLAY_TYPE_GAUGE                                               (FIT_CAST(FIT_EXD_DISPLAY_TYPE, 10))
#define FIT_EXD_DISPLAY_TYPE_COUNT                                               11

typedef FIT_ENUM FIT_EXD_DATA_UNITS;
#define FIT_EXD_DATA_UNITS_INVALID                                               FIT_ENUM_INVALID
#define FIT_EXD_DATA_UNITS_NO_UNITS                                              (FIT_CAST(FIT_EXD_DATA_UNITS, 0))
#define FIT_EXD_DATA_UNITS_LAPS                                                  (FIT_CAST(FIT_EXD_DATA_UNITS, 1))
#define FIT_EXD_DATA_UNITS_MILES_PER_HOUR                                        (FIT_CAST(FIT_EXD_DATA_UNITS, 2))
#define FIT_EXD_DATA_UNITS_KILOMETERS_PER_HOUR                                   (FIT_CAST(FIT_EXD_DATA_UNITS, 3))
#define FIT_EXD_DATA_UNITS_FEET_PER_HOUR                                         (FIT_CAST(FIT_EXD_DATA_UNITS, 4))
#define FIT_EXD_DATA_UNITS_METERS_PER_HOUR                                       (FIT_CAST(FIT_EXD_DATA_UNITS, 5))
#define FIT_EXD_DATA_UNITS_DEGREES_CELSIUS                                       (FIT_CAST(FIT_EXD_DATA_UNITS, 6))
#define FIT_EXD_DATA_UNITS_DEGREES_FARENHEIT                                     (FIT_CAST(FIT_EXD_DATA_UNITS, 7))
#define FIT_EXD_DATA_UNITS_ZONE                                                  (FIT_CAST(FIT_EXD_DATA_UNITS, 8))
#define FIT_EXD_DATA_UNITS_GEAR                                                  (FIT_CAST(FIT_EXD_DATA_UNITS, 9))
#define FIT_EXD_DATA_UNITS_RPM                                                   (FIT_CAST(FIT_EXD_DATA_UNITS, 10))
#define FIT_EXD_DATA_UNITS_BPM                                                   (FIT_CAST(FIT_EXD_DATA_UNITS, 11))
#define FIT_EXD_DATA_UNITS_DEGREES                                               (FIT_CAST(FIT_EXD_DATA_UNITS, 12))
#define FIT_EXD_DATA_UNITS_MILLIMETERS                                           (FIT_CAST(FIT_EXD_DATA_UNITS, 13))
#define FIT_EXD_DATA_UNITS_METERS                                                (FIT_CAST(FIT_EXD_DATA_UNITS, 14))
#define FIT_EXD_DATA_UNITS_KILOMETERS                                            (FIT_CAST(FIT_EXD_DATA_UNITS, 15))
#define FIT_EXD_DATA_UNITS_FEET                                                  (FIT_CAST(FIT_EXD_DATA_UNITS, 16))
#define FIT_EXD_DATA_UNITS_YARDS                                                 (FIT_CAST(FIT_EXD_DATA_UNITS, 17))
#define FIT_EXD_DATA_UNITS_KILOFEET                                              (FIT_CAST(FIT_EXD_DATA_UNITS, 18))
#define FIT_EXD_DATA_UNITS_MILES                                                 (FIT_CAST(FIT_EXD_DATA_UNITS, 19))
#define FIT_EXD_DATA_UNITS_TIME                                                  (FIT_CAST(FIT_EXD_DATA_UNITS, 20))
#define FIT_EXD_DATA_UNITS_ENUM_TURN_TYPE                                        (FIT_CAST(FIT_EXD_DATA_UNITS, 21))
#define FIT_EXD_DATA_UNITS_PERCENT                                               (FIT_CAST(FIT_EXD_DATA_UNITS, 22))
#define FIT_EXD_DATA_UNITS_WATTS                                                 (FIT_CAST(FIT_EXD_DATA_UNITS, 23))
#define FIT_EXD_DATA_UNITS_WATTS_PER_KILOGRAM                                    (FIT_CAST(FIT_EXD_DATA_UNITS, 24))
#define FIT_EXD_DATA_UNITS_ENUM_BATTERY_STATUS                                   (FIT_CAST(FIT_EXD_DATA_UNITS, 25))
#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_BEAM_ANGLE_MODE                       (FIT_CAST(FIT_EXD_DATA_UNITS, 26))
#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_BATTERY_STATUS                        (FIT_CAST(FIT_EXD_DATA_UNITS, 27))
#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_NETWORK_CONFIG_TYPE                   (FIT_CAST(FIT_EXD_DATA_UNITS, 28))
#define FIT_EXD_DATA_UNITS_LIGHTS                                                (FIT_CAST(FIT_EXD_DATA_UNITS, 29))
#define FIT_EXD_DATA_UNITS_SECONDS                                               (FIT_CAST(FIT_EXD_DATA_UNITS, 30))
#define FIT_EXD_DATA_UNITS_MINUTES                                               (FIT_CAST(FIT_EXD_DATA_UNITS, 31))
#define FIT_EXD_DATA_UNITS_HOURS                                                 (FIT_CAST(FIT_EXD_DATA_UNITS, 32))
#define FIT_EXD_DATA_UNITS_CALORIES                                              (FIT_CAST(FIT_EXD_DATA_UNITS, 33))
#define FIT_EXD_DATA_UNITS_KILOJOULES                                            (FIT_CAST(FIT_EXD_DATA_UNITS, 34))
#define FIT_EXD_DATA_UNITS_MILLISECONDS                                          (FIT_CAST(FIT_EXD_DATA_UNITS, 35))
#define FIT_EXD_DATA_UNITS_SECOND_PER_MILE                                       (FIT_CAST(FIT_EXD_DATA_UNITS, 36))
#define FIT_EXD_DATA_UNITS_SECOND_PER_KILOMETER                                  (FIT_CAST(FIT_EXD_DATA_UNITS, 37))
#define FIT_EXD_DATA_UNITS_CENTIMETER                                            (FIT_CAST(FIT_EXD_DATA_UNITS, 38))
#define FIT_EXD_DATA_UNITS_ENUM_COURSE_POINT                                     (FIT_CAST(FIT_EXD_DATA_UNITS, 39))
#define FIT_EXD_DATA_UNITS_BRADIANS                                              (FIT_CAST(FIT_EXD_DATA_UNITS, 40))
#define FIT_EXD_DATA_UNITS_ENUM_SPORT                                            (FIT_CAST(FIT_EXD_DATA_UNITS, 41))
#define FIT_EXD_DATA_UNITS_INCHES_HG                                             (FIT_CAST(FIT_EXD_DATA_UNITS, 42))
#define FIT_EXD_DATA_UNITS_MM_HG                                                 (FIT_CAST(FIT_EXD_DATA_UNITS, 43))
#define FIT_EXD_DATA_UNITS_MBARS                                                 (FIT_CAST(FIT_EXD_DATA_UNITS, 44))
#define FIT_EXD_DATA_UNITS_HECTO_PASCALS                                         (FIT_CAST(FIT_EXD_DATA_UNITS, 45))
#define FIT_EXD_DATA_UNITS_FEET_PER_MIN                                          (FIT_CAST(FIT_EXD_DATA_UNITS, 46))
#define FIT_EXD_DATA_UNITS_METERS_PER_MIN                                        (FIT_CAST(FIT_EXD_DATA_UNITS, 47))
#define FIT_EXD_DATA_UNITS_METERS_PER_SEC                                        (FIT_CAST(FIT_EXD_DATA_UNITS, 48))
#define FIT_EXD_DATA_UNITS_EIGHT_CARDINAL                                        (FIT_CAST(FIT_EXD_DATA_UNITS, 49))
#define FIT_EXD_DATA_UNITS_COUNT                                                 50

typedef FIT_ENUM FIT_EXD_QUALIFIERS;
#define FIT_EXD_QUALIFIERS_INVALID                                               FIT_ENUM_INVALID
#define FIT_EXD_QUALIFIERS_NO_QUALIFIER                                          (FIT_CAST(FIT_EXD_QUALIFIERS, 0))
#define FIT_EXD_QUALIFIERS_INSTANTANEOUS                                         (FIT_CAST(FIT_EXD_QUALIFIERS, 1))
#define FIT_EXD_QUALIFIERS_AVERAGE                                               (FIT_CAST(FIT_EXD_QUALIFIERS, 2))
#define FIT_EXD_QUALIFIERS_LAP                                                   (FIT_CAST(FIT_EXD_QUALIFIERS, 3))
#define FIT_EXD_QUALIFIERS_MAXIMUM                                               (FIT_CAST(FIT_EXD_QUALIFIERS, 4))
#define FIT_EXD_QUALIFIERS_MAXIMUM_AVERAGE                                       (FIT_CAST(FIT_EXD_QUALIFIERS, 5))
#define FIT_EXD_QUALIFIERS_MAXIMUM_LAP                                           (FIT_CAST(FIT_EXD_QUALIFIERS, 6))
#define FIT_EXD_QUALIFIERS_LAST_LAP                                              (FIT_CAST(FIT_EXD_QUALIFIERS, 7))
#define FIT_EXD_QUALIFIERS_AVERAGE_LAP                                           (FIT_CAST(FIT_EXD_QUALIFIERS, 8))
#define FIT_EXD_QUALIFIERS_TO_DESTINATION                                        (FIT_CAST(FIT_EXD_QUALIFIERS, 9))
#define FIT_EXD_QUALIFIERS_TO_GO                                                 (FIT_CAST(FIT_EXD_QUALIFIERS, 10))
#define FIT_EXD_QUALIFIERS_TO_NEXT                                               (FIT_CAST(FIT_EXD_QUALIFIERS, 11))
#define FIT_EXD_QUALIFIERS_NEXT_COURSE_POINT                                     (FIT_CAST(FIT_EXD_QUALIFIERS, 12))
#define FIT_EXD_QUALIFIERS_TOTAL                                                 (FIT_CAST(FIT_EXD_QUALIFIERS, 13))
#define FIT_EXD_QUALIFIERS_THREE_SECOND_AVERAGE                                  (FIT_CAST(FIT_EXD_QUALIFIERS, 14))
#define FIT_EXD_QUALIFIERS_TEN_SECOND_AVERAGE                                    (FIT_CAST(FIT_EXD_QUALIFIERS, 15))
#define FIT_EXD_QUALIFIERS_THIRTY_SECOND_AVERAGE                                 (FIT_CAST(FIT_EXD_QUALIFIERS, 16))
#define FIT_EXD_QUALIFIERS_PERCENT_MAXIMUM                                       (FIT_CAST(FIT_EXD_QUALIFIERS, 17))
#define FIT_EXD_QUALIFIERS_PERCENT_MAXIMUM_AVERAGE                               (FIT_CAST(FIT_EXD_QUALIFIERS, 18))
#define FIT_EXD_QUALIFIERS_LAP_PERCENT_MAXIMUM                                   (FIT_CAST(FIT_EXD_QUALIFIERS, 19))
#define FIT_EXD_QUALIFIERS_ELAPSED                                               (FIT_CAST(FIT_EXD_QUALIFIERS, 20))
#define FIT_EXD_QUALIFIERS_SUNRISE                                               (FIT_CAST(FIT_EXD_QUALIFIERS, 21))
#define FIT_EXD_QUALIFIERS_SUNSET                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 22))
#define FIT_EXD_QUALIFIERS_COMPARED_TO_VIRTUAL_PARTNER                           (FIT_CAST(FIT_EXD_QUALIFIERS, 23))
#define FIT_EXD_QUALIFIERS_MAXIMUM_24H                                           (FIT_CAST(FIT_EXD_QUALIFIERS, 24))
#define FIT_EXD_QUALIFIERS_MINIMUM_24H                                           (FIT_CAST(FIT_EXD_QUALIFIERS, 25))
#define FIT_EXD_QUALIFIERS_MINIMUM                                               (FIT_CAST(FIT_EXD_QUALIFIERS, 26))
#define FIT_EXD_QUALIFIERS_FIRST                                                 (FIT_CAST(FIT_EXD_QUALIFIERS, 27))
#define FIT_EXD_QUALIFIERS_SECOND                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 28))
#define FIT_EXD_QUALIFIERS_THIRD                                                 (FIT_CAST(FIT_EXD_QUALIFIERS, 29))
#define FIT_EXD_QUALIFIERS_SHIFTER                                               (FIT_CAST(FIT_EXD_QUALIFIERS, 30))
#define FIT_EXD_QUALIFIERS_LAST_SPORT                                            (FIT_CAST(FIT_EXD_QUALIFIERS, 31))
#define FIT_EXD_QUALIFIERS_MOVING                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 32))
#define FIT_EXD_QUALIFIERS_STOPPED                                               (FIT_CAST(FIT_EXD_QUALIFIERS, 33))
#define FIT_EXD_QUALIFIERS_ESTIMATED_TOTAL                                       (FIT_CAST(FIT_EXD_QUALIFIERS, 34))
#define FIT_EXD_QUALIFIERS_ZONE_9                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 242))
#define FIT_EXD_QUALIFIERS_ZONE_8                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 243))
#define FIT_EXD_QUALIFIERS_ZONE_7                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 244))
#define FIT_EXD_QUALIFIERS_ZONE_6                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 245))
#define FIT_EXD_QUALIFIERS_ZONE_5                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 246))
#define FIT_EXD_QUALIFIERS_ZONE_4                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 247))
#define FIT_EXD_QUALIFIERS_ZONE_3                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 248))
#define FIT_EXD_QUALIFIERS_ZONE_2                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 249))
#define FIT_EXD_QUALIFIERS_ZONE_1                                                (FIT_CAST(FIT_EXD_QUALIFIERS, 250))
#define FIT_EXD_QUALIFIERS_COUNT                                                 44

typedef FIT_ENUM FIT_EXD_DESCRIPTORS;
#define FIT_EXD_DESCRIPTORS_INVALID                                              FIT_ENUM_INVALID
#define FIT_EXD_DESCRIPTORS_BIKE_LIGHT_BATTERY_STATUS                            (FIT_CAST(FIT_EXD_DESCRIPTORS, 0))
#define FIT_EXD_DESCRIPTORS_BEAM_ANGLE_STATUS                                    (FIT_CAST(FIT_EXD_DESCRIPTORS, 1))
#define FIT_EXD_DESCRIPTORS_BATERY_LEVEL                                         (FIT_CAST(FIT_EXD_DESCRIPTORS, 2))
#define FIT_EXD_DESCRIPTORS_LIGHT_NETWORK_MODE                                   (FIT_CAST(FIT_EXD_DESCRIPTORS, 3))
#define FIT_EXD_DESCRIPTORS_NUMBER_LIGHTS_CONNECTED                              (FIT_CAST(FIT_EXD_DESCRIPTORS, 4))
#define FIT_EXD_DESCRIPTORS_CADENCE                                              (FIT_CAST(FIT_EXD_DESCRIPTORS, 5))
#define FIT_EXD_DESCRIPTORS_DISTANCE                                             (FIT_CAST(FIT_EXD_DESCRIPTORS, 6))
#define FIT_EXD_DESCRIPTORS_ESTIMATED_TIME_OF_ARRIVAL                            (FIT_CAST(FIT_EXD_DESCRIPTORS, 7))
#define FIT_EXD_DESCRIPTORS_HEADING                                              (FIT_CAST(FIT_EXD_DESCRIPTORS, 8))
#define FIT_EXD_DESCRIPTORS_TIME                                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 9))
#define FIT_EXD_DESCRIPTORS_BATTERY_LEVEL                                        (FIT_CAST(FIT_EXD_DESCRIPTORS, 10))
#define FIT_EXD_DESCRIPTORS_TRAINER_RESISTANCE                                   (FIT_CAST(FIT_EXD_DESCRIPTORS, 11))
#define FIT_EXD_DESCRIPTORS_TRAINER_TARGET_POWER                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 12))
#define FIT_EXD_DESCRIPTORS_TIME_SEATED                                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 13))
#define FIT_EXD_DESCRIPTORS_TIME_STANDING                                        (FIT_CAST(FIT_EXD_DESCRIPTORS, 14))
#define FIT_EXD_DESCRIPTORS_ELEVATION                                            (FIT_CAST(FIT_EXD_DESCRIPTORS, 15))
#define FIT_EXD_DESCRIPTORS_GRADE                                                (FIT_CAST(FIT_EXD_DESCRIPTORS, 16))
#define FIT_EXD_DESCRIPTORS_ASCENT                                               (FIT_CAST(FIT_EXD_DESCRIPTORS, 17))
#define FIT_EXD_DESCRIPTORS_DESCENT                                              (FIT_CAST(FIT_EXD_DESCRIPTORS, 18))
#define FIT_EXD_DESCRIPTORS_VERTICAL_SPEED                                       (FIT_CAST(FIT_EXD_DESCRIPTORS, 19))
#define FIT_EXD_DESCRIPTORS_DI2_BATTERY_LEVEL                                    (FIT_CAST(FIT_EXD_DESCRIPTORS, 20))
#define FIT_EXD_DESCRIPTORS_FRONT_GEAR                                           (FIT_CAST(FIT_EXD_DESCRIPTORS, 21))
#define FIT_EXD_DESCRIPTORS_REAR_GEAR                                            (FIT_CAST(FIT_EXD_DESCRIPTORS, 22))
#define FIT_EXD_DESCRIPTORS_GEAR_RATIO                                           (FIT_CAST(FIT_EXD_DESCRIPTORS, 23))
#define FIT_EXD_DESCRIPTORS_HEART_RATE                                           (FIT_CAST(FIT_EXD_DESCRIPTORS, 24))
#define FIT_EXD_DESCRIPTORS_HEART_RATE_ZONE                                      (FIT_CAST(FIT_EXD_DESCRIPTORS, 25))
#define FIT_EXD_DESCRIPTORS_TIME_IN_HEART_RATE_ZONE                              (FIT_CAST(FIT_EXD_DESCRIPTORS, 26))
#define FIT_EXD_DESCRIPTORS_HEART_RATE_RESERVE                                   (FIT_CAST(FIT_EXD_DESCRIPTORS, 27))
#define FIT_EXD_DESCRIPTORS_CALORIES                                             (FIT_CAST(FIT_EXD_DESCRIPTORS, 28))
#define FIT_EXD_DESCRIPTORS_GPS_ACCURACY                                         (FIT_CAST(FIT_EXD_DESCRIPTORS, 29))
#define FIT_EXD_DESCRIPTORS_GPS_SIGNAL_STRENGTH                                  (FIT_CAST(FIT_EXD_DESCRIPTORS, 30))
#define FIT_EXD_DESCRIPTORS_TEMPERATURE                                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 31))
#define FIT_EXD_DESCRIPTORS_TIME_OF_DAY                                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 32))
#define FIT_EXD_DESCRIPTORS_BALANCE                                              (FIT_CAST(FIT_EXD_DESCRIPTORS, 33))
#define FIT_EXD_DESCRIPTORS_PEDAL_SMOOTHNESS                                     (FIT_CAST(FIT_EXD_DESCRIPTORS, 34))
#define FIT_EXD_DESCRIPTORS_POWER                                                (FIT_CAST(FIT_EXD_DESCRIPTORS, 35))
#define FIT_EXD_DESCRIPTORS_FUNCTIONAL_THRESHOLD_POWER                           (FIT_CAST(FIT_EXD_DESCRIPTORS, 36))
#define FIT_EXD_DESCRIPTORS_INTENSITY_FACTOR                                     (FIT_CAST(FIT_EXD_DESCRIPTORS, 37))
#define FIT_EXD_DESCRIPTORS_WORK                                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 38))
#define FIT_EXD_DESCRIPTORS_POWER_RATIO                                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 39))
#define FIT_EXD_DESCRIPTORS_NORMALIZED_POWER                                     (FIT_CAST(FIT_EXD_DESCRIPTORS, 40))
#define FIT_EXD_DESCRIPTORS_TRAINING_STRESS_SCORE                                (FIT_CAST(FIT_EXD_DESCRIPTORS, 41))
#define FIT_EXD_DESCRIPTORS_TIME_ON_ZONE                                         (FIT_CAST(FIT_EXD_DESCRIPTORS, 42))
#define FIT_EXD_DESCRIPTORS_SPEED                                                (FIT_CAST(FIT_EXD_DESCRIPTORS, 43))
#define FIT_EXD_DESCRIPTORS_LAPS                                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 44))
#define FIT_EXD_DESCRIPTORS_REPS                                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 45))
#define FIT_EXD_DESCRIPTORS_WORKOUT_STEP                                         (FIT_CAST(FIT_EXD_DESCRIPTORS, 46))
#define FIT_EXD_DESCRIPTORS_COURSE_DISTANCE                                      (FIT_CAST(FIT_EXD_DESCRIPTORS, 47))
#define FIT_EXD_DESCRIPTORS_NAVIGATION_DISTANCE                                  (FIT_CAST(FIT_EXD_DESCRIPTORS, 48))
#define FIT_EXD_DESCRIPTORS_COURSE_ESTIMATED_TIME_OF_ARRIVAL                     (FIT_CAST(FIT_EXD_DESCRIPTORS, 49))
#define FIT_EXD_DESCRIPTORS_NAVIGATION_ESTIMATED_TIME_OF_ARRIVAL                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 50))
#define FIT_EXD_DESCRIPTORS_COURSE_TIME                                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 51))
#define FIT_EXD_DESCRIPTORS_NAVIGATION_TIME                                      (FIT_CAST(FIT_EXD_DESCRIPTORS, 52))
#define FIT_EXD_DESCRIPTORS_COURSE_HEADING                                       (FIT_CAST(FIT_EXD_DESCRIPTORS, 53))
#define FIT_EXD_DESCRIPTORS_NAVIGATION_HEADING                                   (FIT_CAST(FIT_EXD_DESCRIPTORS, 54))
#define FIT_EXD_DESCRIPTORS_POWER_ZONE                                           (FIT_CAST(FIT_EXD_DESCRIPTORS, 55))
#define FIT_EXD_DESCRIPTORS_TORQUE_EFFECTIVENESS                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 56))
#define FIT_EXD_DESCRIPTORS_TIMER_TIME                                           (FIT_CAST(FIT_EXD_DESCRIPTORS, 57))
#define FIT_EXD_DESCRIPTORS_POWER_WEIGHT_RATIO                                   (FIT_CAST(FIT_EXD_DESCRIPTORS, 58))
#define FIT_EXD_DESCRIPTORS_LEFT_PLATFORM_CENTER_OFFSET                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 59))
#define FIT_EXD_DESCRIPTORS_RIGHT_PLATFORM_CENTER_OFFSET                         (FIT_CAST(FIT_EXD_DESCRIPTORS, 60))
#define FIT_EXD_DESCRIPTORS_LEFT_POWER_PHASE_START_ANGLE                         (FIT_CAST(FIT_EXD_DESCRIPTORS, 61))
#define FIT_EXD_DESCRIPTORS_RIGHT_POWER_PHASE_START_ANGLE                        (FIT_CAST(FIT_EXD_DESCRIPTORS, 62))
#define FIT_EXD_DESCRIPTORS_LEFT_POWER_PHASE_FINISH_ANGLE                        (FIT_CAST(FIT_EXD_DESCRIPTORS, 63))
#define FIT_EXD_DESCRIPTORS_RIGHT_POWER_PHASE_FINISH_ANGLE                       (FIT_CAST(FIT_EXD_DESCRIPTORS, 64))
#define FIT_EXD_DESCRIPTORS_GEARS                                                (FIT_CAST(FIT_EXD_DESCRIPTORS, 65)) // Combined gear information
#define FIT_EXD_DESCRIPTORS_PACE                                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 66))
#define FIT_EXD_DESCRIPTORS_TRAINING_EFFECT                                      (FIT_CAST(FIT_EXD_DESCRIPTORS, 67))
#define FIT_EXD_DESCRIPTORS_VERTICAL_OSCILLATION                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 68))
#define FIT_EXD_DESCRIPTORS_VERTICAL_RATIO                                       (FIT_CAST(FIT_EXD_DESCRIPTORS, 69))
#define FIT_EXD_DESCRIPTORS_GROUND_CONTACT_TIME                                  (FIT_CAST(FIT_EXD_DESCRIPTORS, 70))
#define FIT_EXD_DESCRIPTORS_LEFT_GROUND_CONTACT_TIME_BALANCE                     (FIT_CAST(FIT_EXD_DESCRIPTORS, 71))
#define FIT_EXD_DESCRIPTORS_RIGHT_GROUND_CONTACT_TIME_BALANCE                    (FIT_CAST(FIT_EXD_DESCRIPTORS, 72))
#define FIT_EXD_DESCRIPTORS_STRIDE_LENGTH                                        (FIT_CAST(FIT_EXD_DESCRIPTORS, 73))
#define FIT_EXD_DESCRIPTORS_RUNNING_CADENCE                                      (FIT_CAST(FIT_EXD_DESCRIPTORS, 74))
#define FIT_EXD_DESCRIPTORS_PERFORMANCE_CONDITION                                (FIT_CAST(FIT_EXD_DESCRIPTORS, 75))
#define FIT_EXD_DESCRIPTORS_COURSE_TYPE                                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 76))
#define FIT_EXD_DESCRIPTORS_TIME_IN_POWER_ZONE                                   (FIT_CAST(FIT_EXD_DESCRIPTORS, 77))
#define FIT_EXD_DESCRIPTORS_NAVIGATION_TURN                                      (FIT_CAST(FIT_EXD_DESCRIPTORS, 78))
#define FIT_EXD_DESCRIPTORS_COURSE_LOCATION                                      (FIT_CAST(FIT_EXD_DESCRIPTORS, 79))
#define FIT_EXD_DESCRIPTORS_NAVIGATION_LOCATION                                  (FIT_CAST(FIT_EXD_DESCRIPTORS, 80))
#define FIT_EXD_DESCRIPTORS_COMPASS                                              (FIT_CAST(FIT_EXD_DESCRIPTORS, 81))
#define FIT_EXD_DESCRIPTORS_GEAR_COMBO                                           (FIT_CAST(FIT_EXD_DESCRIPTORS, 82))
#define FIT_EXD_DESCRIPTORS_MUSCLE_OXYGEN                                        (FIT_CAST(FIT_EXD_DESCRIPTORS, 83))
#define FIT_EXD_DESCRIPTORS_ICON                                                 (FIT_CAST(FIT_EXD_DESCRIPTORS, 84))
#define FIT_EXD_DESCRIPTORS_COMPASS_HEADING                                      (FIT_CAST(FIT_EXD_DESCRIPTORS, 85))
#define FIT_EXD_DESCRIPTORS_GPS_HEADING                                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 86))
#define FIT_EXD_DESCRIPTORS_GPS_ELEVATION                                        (FIT_CAST(FIT_EXD_DESCRIPTORS, 87))
#define FIT_EXD_DESCRIPTORS_ANAEROBIC_TRAINING_EFFECT                            (FIT_CAST(FIT_EXD_DESCRIPTORS, 88))
#define FIT_EXD_DESCRIPTORS_COURSE                                               (FIT_CAST(FIT_EXD_DESCRIPTORS, 89))
#define FIT_EXD_DESCRIPTORS_OFF_COURSE                                           (FIT_CAST(FIT_EXD_DESCRIPTORS, 90))
#define FIT_EXD_DESCRIPTORS_GLIDE_RATIO                                          (FIT_CAST(FIT_EXD_DESCRIPTORS, 91))
#define FIT_EXD_DESCRIPTORS_VERTICAL_DISTANCE                                    (FIT_CAST(FIT_EXD_DESCRIPTORS, 92))
#define FIT_EXD_DESCRIPTORS_VMG                                                  (FIT_CAST(FIT_EXD_DESCRIPTORS, 93))
#define FIT_EXD_DESCRIPTORS_AMBIENT_PRESSURE                                     (FIT_CAST(FIT_EXD_DESCRIPTORS, 94))
#define FIT_EXD_DESCRIPTORS_PRESSURE                                             (FIT_CAST(FIT_EXD_DESCRIPTORS, 95))
#define FIT_EXD_DESCRIPTORS_VAM                                                  (FIT_CAST(FIT_EXD_DESCRIPTORS, 96))
#define FIT_EXD_DESCRIPTORS_COUNT                                                97

typedef FIT_UINT32 FIT_AUTO_ACTIVITY_DETECT;
#define FIT_AUTO_ACTIVITY_DETECT_INVALID                                         FIT_UINT32_INVALID
#define FIT_AUTO_ACTIVITY_DETECT_NONE                                            (FIT_CAST(FIT_AUTO_ACTIVITY_DETECT, 0x00000000))
#define FIT_AUTO_ACTIVITY_DETECT_RUNNING                                         (FIT_CAST(FIT_AUTO_ACTIVITY_DETECT, 0x00000001))
#define FIT_AUTO_ACTIVITY_DETECT_CYCLING                                         (FIT_CAST(FIT_AUTO_ACTIVITY_DETECT, 0x00000002))
#define FIT_AUTO_ACTIVITY_DETECT_SWIMMING                                        (FIT_CAST(FIT_AUTO_ACTIVITY_DETECT, 0x00000004))
#define FIT_AUTO_ACTIVITY_DETECT_WALKING                                         (FIT_CAST(FIT_AUTO_ACTIVITY_DETECT, 0x00000008))
#define FIT_AUTO_ACTIVITY_DETECT_ELLIPTICAL                                      (FIT_CAST(FIT_AUTO_ACTIVITY_DETECT, 0x00000020))
#define FIT_AUTO_ACTIVITY_DETECT_SEDENTARY                                       (FIT_CAST(FIT_AUTO_ACTIVITY_DETECT, 0x00000400))
#define FIT_AUTO_ACTIVITY_DETECT_COUNT                                           7

typedef FIT_UINT32Z FIT_SUPPORTED_EXD_SCREEN_LAYOUTS;
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_INVALID                                 FIT_UINT32Z_INVALID
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_FULL_SCREEN                             (FIT_CAST(FIT_SUPPORTED_EXD_SCREEN_LAYOUTS, 0x00000001))
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL                           (FIT_CAST(FIT_SUPPORTED_EXD_SCREEN_LAYOUTS, 0x00000002))
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL                         (FIT_CAST(FIT_SUPPORTED_EXD_SCREEN_LAYOUTS, 0x00000004))
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL_RIGHT_SPLIT               (FIT_CAST(FIT_SUPPORTED_EXD_SCREEN_LAYOUTS, 0x00000008))
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL_BOTTOM_SPLIT            (FIT_CAST(FIT_SUPPORTED_EXD_SCREEN_LAYOUTS, 0x00000010))
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_FULL_QUARTER_SPLIT                      (FIT_CAST(FIT_SUPPORTED_EXD_SCREEN_LAYOUTS, 0x00000020))
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL_LEFT_SPLIT                (FIT_CAST(FIT_SUPPORTED_EXD_SCREEN_LAYOUTS, 0x00000040))
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL_TOP_SPLIT               (FIT_CAST(FIT_SUPPORTED_EXD_SCREEN_LAYOUTS, 0x00000080))
#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_COUNT                                   8

typedef FIT_UINT8 FIT_FIT_BASE_TYPE;
#define FIT_FIT_BASE_TYPE_INVALID                                                FIT_UINT8_INVALID
#define FIT_FIT_BASE_TYPE_ENUM                                                   (FIT_CAST(FIT_FIT_BASE_TYPE, 0))
#define FIT_FIT_BASE_TYPE_SINT8                                                  (FIT_CAST(FIT_FIT_BASE_TYPE, 1))
#define FIT_FIT_BASE_TYPE_UINT8                                                  (FIT_CAST(FIT_FIT_BASE_TYPE, 2))
#define FIT_FIT_BASE_TYPE_SINT16                                                 (FIT_CAST(FIT_FIT_BASE_TYPE, 131))
#define FIT_FIT_BASE_TYPE_UINT16                                                 (FIT_CAST(FIT_FIT_BASE_TYPE, 132))
#define FIT_FIT_BASE_TYPE_SINT32                                                 (FIT_CAST(FIT_FIT_BASE_TYPE, 133))
#define FIT_FIT_BASE_TYPE_UINT32                                                 (FIT_CAST(FIT_FIT_BASE_TYPE, 134))
#define FIT_FIT_BASE_TYPE_STRING                                                 (FIT_CAST(FIT_FIT_BASE_TYPE, 7))
#define FIT_FIT_BASE_TYPE_FLOAT32                                                (FIT_CAST(FIT_FIT_BASE_TYPE, 136))
#define FIT_FIT_BASE_TYPE_FLOAT64                                                (FIT_CAST(FIT_FIT_BASE_TYPE, 137))
#define FIT_FIT_BASE_TYPE_UINT8Z                                                 (FIT_CAST(FIT_FIT_BASE_TYPE, 10))
#define FIT_FIT_BASE_TYPE_UINT16Z                                                (FIT_CAST(FIT_FIT_BASE_TYPE, 139))
#define FIT_FIT_BASE_TYPE_UINT32Z                                                (FIT_CAST(FIT_FIT_BASE_TYPE, 140))
#define FIT_FIT_BASE_TYPE_BYTE                                                   (FIT_CAST(FIT_FIT_BASE_TYPE, 13))
#define FIT_FIT_BASE_TYPE_SINT64                                                 (FIT_CAST(FIT_FIT_BASE_TYPE, 142))
#define FIT_FIT_BASE_TYPE_UINT64                                                 (FIT_CAST(FIT_FIT_BASE_TYPE, 143))
#define FIT_FIT_BASE_TYPE_UINT64Z                                                (FIT_CAST(FIT_FIT_BASE_TYPE, 144))
#define FIT_FIT_BASE_TYPE_COUNT                                                  17

typedef FIT_ENUM FIT_TURN_TYPE;
#define FIT_TURN_TYPE_INVALID                                                    FIT_ENUM_INVALID
#define FIT_TURN_TYPE_ARRIVING_IDX                                               (FIT_CAST(FIT_TURN_TYPE, 0))
#define FIT_TURN_TYPE_ARRIVING_LEFT_IDX                                          (FIT_CAST(FIT_TURN_TYPE, 1))
#define FIT_TURN_TYPE_ARRIVING_RIGHT_IDX                                         (FIT_CAST(FIT_TURN_TYPE, 2))
#define FIT_TURN_TYPE_ARRIVING_VIA_IDX                                           (FIT_CAST(FIT_TURN_TYPE, 3))
#define FIT_TURN_TYPE_ARRIVING_VIA_LEFT_IDX                                      (FIT_CAST(FIT_TURN_TYPE, 4))
#define FIT_TURN_TYPE_ARRIVING_VIA_RIGHT_IDX                                     (FIT_CAST(FIT_TURN_TYPE, 5))
#define FIT_TURN_TYPE_BEAR_KEEP_LEFT_IDX                                         (FIT_CAST(FIT_TURN_TYPE, 6))
#define FIT_TURN_TYPE_BEAR_KEEP_RIGHT_IDX                                        (FIT_CAST(FIT_TURN_TYPE, 7))
#define FIT_TURN_TYPE_CONTINUE_IDX                                               (FIT_CAST(FIT_TURN_TYPE, 8))
#define FIT_TURN_TYPE_EXIT_LEFT_IDX                                              (FIT_CAST(FIT_TURN_TYPE, 9))
#define FIT_TURN_TYPE_EXIT_RIGHT_IDX                                             (FIT_CAST(FIT_TURN_TYPE, 10))
#define FIT_TURN_TYPE_FERRY_IDX                                                  (FIT_CAST(FIT_TURN_TYPE, 11))
#define FIT_TURN_TYPE_ROUNDABOUT_45_IDX                                          (FIT_CAST(FIT_TURN_TYPE, 12))
#define FIT_TURN_TYPE_ROUNDABOUT_90_IDX                                          (FIT_CAST(FIT_TURN_TYPE, 13))
#define FIT_TURN_TYPE_ROUNDABOUT_135_IDX                                         (FIT_CAST(FIT_TURN_TYPE, 14))
#define FIT_TURN_TYPE_ROUNDABOUT_180_IDX                                         (FIT_CAST(FIT_TURN_TYPE, 15))
#define FIT_TURN_TYPE_ROUNDABOUT_225_IDX                                         (FIT_CAST(FIT_TURN_TYPE, 16))
#define FIT_TURN_TYPE_ROUNDABOUT_270_IDX                                         (FIT_CAST(FIT_TURN_TYPE, 17))
#define FIT_TURN_TYPE_ROUNDABOUT_315_IDX                                         (FIT_CAST(FIT_TURN_TYPE, 18))
#define FIT_TURN_TYPE_ROUNDABOUT_360_IDX                                         (FIT_CAST(FIT_TURN_TYPE, 19))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_45_IDX                                      (FIT_CAST(FIT_TURN_TYPE, 20))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_90_IDX                                      (FIT_CAST(FIT_TURN_TYPE, 21))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_135_IDX                                     (FIT_CAST(FIT_TURN_TYPE, 22))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_180_IDX                                     (FIT_CAST(FIT_TURN_TYPE, 23))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_225_IDX                                     (FIT_CAST(FIT_TURN_TYPE, 24))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_270_IDX                                     (FIT_CAST(FIT_TURN_TYPE, 25))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_315_IDX                                     (FIT_CAST(FIT_TURN_TYPE, 26))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_360_IDX                                     (FIT_CAST(FIT_TURN_TYPE, 27))
#define FIT_TURN_TYPE_ROUNDABOUT_GENERIC_IDX                                     (FIT_CAST(FIT_TURN_TYPE, 28))
#define FIT_TURN_TYPE_ROUNDABOUT_NEG_GENERIC_IDX                                 (FIT_CAST(FIT_TURN_TYPE, 29))
#define FIT_TURN_TYPE_SHARP_TURN_LEFT_IDX                                        (FIT_CAST(FIT_TURN_TYPE, 30))
#define FIT_TURN_TYPE_SHARP_TURN_RIGHT_IDX                                       (FIT_CAST(FIT_TURN_TYPE, 31))
#define FIT_TURN_TYPE_TURN_LEFT_IDX                                              (FIT_CAST(FIT_TURN_TYPE, 32))
#define FIT_TURN_TYPE_TURN_RIGHT_IDX                                             (FIT_CAST(FIT_TURN_TYPE, 33))
#define FIT_TURN_TYPE_UTURN_LEFT_IDX                                             (FIT_CAST(FIT_TURN_TYPE, 34))
#define FIT_TURN_TYPE_UTURN_RIGHT_IDX                                            (FIT_CAST(FIT_TURN_TYPE, 35))
#define FIT_TURN_TYPE_ICON_INV_IDX                                               (FIT_CAST(FIT_TURN_TYPE, 36))
#define FIT_TURN_TYPE_ICON_IDX_CNT                                               (FIT_CAST(FIT_TURN_TYPE, 37))
#define FIT_TURN_TYPE_COUNT                                                      38

typedef FIT_UINT8 FIT_BIKE_LIGHT_BEAM_ANGLE_MODE;
#define FIT_BIKE_LIGHT_BEAM_ANGLE_MODE_INVALID                                   FIT_UINT8_INVALID
#define FIT_BIKE_LIGHT_BEAM_ANGLE_MODE_MANUAL                                    (FIT_CAST(FIT_BIKE_LIGHT_BEAM_ANGLE_MODE, 0))
#define FIT_BIKE_LIGHT_BEAM_ANGLE_MODE_AUTO                                      (FIT_CAST(FIT_BIKE_LIGHT_BEAM_ANGLE_MODE, 1))
#define FIT_BIKE_LIGHT_BEAM_ANGLE_MODE_COUNT                                     2

typedef FIT_UINT16 FIT_FIT_BASE_UNIT;
#define FIT_FIT_BASE_UNIT_INVALID                                                FIT_UINT16_INVALID
#define FIT_FIT_BASE_UNIT_OTHER                                                  (FIT_CAST(FIT_FIT_BASE_UNIT, 0))
#define FIT_FIT_BASE_UNIT_KILOGRAM                                               (FIT_CAST(FIT_FIT_BASE_UNIT, 1))
#define FIT_FIT_BASE_UNIT_POUND                                                  (FIT_CAST(FIT_FIT_BASE_UNIT, 2))
#define FIT_FIT_BASE_UNIT_COUNT                                                  3

typedef FIT_UINT8 FIT_SET_TYPE;
#define FIT_SET_TYPE_INVALID                                                     FIT_UINT8_INVALID
#define FIT_SET_TYPE_REST                                                        (FIT_CAST(FIT_SET_TYPE, 0))
#define FIT_SET_TYPE_ACTIVE                                                      (FIT_CAST(FIT_SET_TYPE, 1))
#define FIT_SET_TYPE_COUNT                                                       2

typedef FIT_ENUM FIT_MAX_MET_CATEGORY;
#define FIT_MAX_MET_CATEGORY_INVALID                                             FIT_ENUM_INVALID
#define FIT_MAX_MET_CATEGORY_GENERIC                                             (FIT_CAST(FIT_MAX_MET_CATEGORY, 0))
#define FIT_MAX_MET_CATEGORY_CYCLING                                             (FIT_CAST(FIT_MAX_MET_CATEGORY, 1))
#define FIT_MAX_MET_CATEGORY_COUNT                                               2

typedef FIT_UINT16 FIT_EXERCISE_CATEGORY;
#define FIT_EXERCISE_CATEGORY_INVALID                                            FIT_UINT16_INVALID
#define FIT_EXERCISE_CATEGORY_BENCH_PRESS                                        (FIT_CAST(FIT_EXERCISE_CATEGORY, 0))
#define FIT_EXERCISE_CATEGORY_CALF_RAISE                                         (FIT_CAST(FIT_EXERCISE_CATEGORY, 1))
#define FIT_EXERCISE_CATEGORY_CARDIO                                             (FIT_CAST(FIT_EXERCISE_CATEGORY, 2))
#define FIT_EXERCISE_CATEGORY_CARRY                                              (FIT_CAST(FIT_EXERCISE_CATEGORY, 3))
#define FIT_EXERCISE_CATEGORY_CHOP                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 4))
#define FIT_EXERCISE_CATEGORY_CORE                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 5))
#define FIT_EXERCISE_CATEGORY_CRUNCH                                             (FIT_CAST(FIT_EXERCISE_CATEGORY, 6))
#define FIT_EXERCISE_CATEGORY_CURL                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 7))
#define FIT_EXERCISE_CATEGORY_DEADLIFT                                           (FIT_CAST(FIT_EXERCISE_CATEGORY, 8))
#define FIT_EXERCISE_CATEGORY_FLYE                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 9))
#define FIT_EXERCISE_CATEGORY_HIP_RAISE                                          (FIT_CAST(FIT_EXERCISE_CATEGORY, 10))
#define FIT_EXERCISE_CATEGORY_HIP_STABILITY                                      (FIT_CAST(FIT_EXERCISE_CATEGORY, 11))
#define FIT_EXERCISE_CATEGORY_HIP_SWING                                          (FIT_CAST(FIT_EXERCISE_CATEGORY, 12))
#define FIT_EXERCISE_CATEGORY_HYPEREXTENSION                                     (FIT_CAST(FIT_EXERCISE_CATEGORY, 13))
#define FIT_EXERCISE_CATEGORY_LATERAL_RAISE                                      (FIT_CAST(FIT_EXERCISE_CATEGORY, 14))
#define FIT_EXERCISE_CATEGORY_LEG_CURL                                           (FIT_CAST(FIT_EXERCISE_CATEGORY, 15))
#define FIT_EXERCISE_CATEGORY_LEG_RAISE                                          (FIT_CAST(FIT_EXERCISE_CATEGORY, 16))
#define FIT_EXERCISE_CATEGORY_LUNGE                                              (FIT_CAST(FIT_EXERCISE_CATEGORY, 17))
#define FIT_EXERCISE_CATEGORY_OLYMPIC_LIFT                                       (FIT_CAST(FIT_EXERCISE_CATEGORY, 18))
#define FIT_EXERCISE_CATEGORY_PLANK                                              (FIT_CAST(FIT_EXERCISE_CATEGORY, 19))
#define FIT_EXERCISE_CATEGORY_PLYO                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 20))
#define FIT_EXERCISE_CATEGORY_PULL_UP                                            (FIT_CAST(FIT_EXERCISE_CATEGORY, 21))
#define FIT_EXERCISE_CATEGORY_PUSH_UP                                            (FIT_CAST(FIT_EXERCISE_CATEGORY, 22))
#define FIT_EXERCISE_CATEGORY_ROW                                                (FIT_CAST(FIT_EXERCISE_CATEGORY, 23))
#define FIT_EXERCISE_CATEGORY_SHOULDER_PRESS                                     (FIT_CAST(FIT_EXERCISE_CATEGORY, 24))
#define FIT_EXERCISE_CATEGORY_SHOULDER_STABILITY                                 (FIT_CAST(FIT_EXERCISE_CATEGORY, 25))
#define FIT_EXERCISE_CATEGORY_SHRUG                                              (FIT_CAST(FIT_EXERCISE_CATEGORY, 26))
#define FIT_EXERCISE_CATEGORY_SIT_UP                                             (FIT_CAST(FIT_EXERCISE_CATEGORY, 27))
#define FIT_EXERCISE_CATEGORY_SQUAT                                              (FIT_CAST(FIT_EXERCISE_CATEGORY, 28))
#define FIT_EXERCISE_CATEGORY_TOTAL_BODY                                         (FIT_CAST(FIT_EXERCISE_CATEGORY, 29))
#define FIT_EXERCISE_CATEGORY_TRICEPS_EXTENSION                                  (FIT_CAST(FIT_EXERCISE_CATEGORY, 30))
#define FIT_EXERCISE_CATEGORY_WARM_UP                                            (FIT_CAST(FIT_EXERCISE_CATEGORY, 31))
#define FIT_EXERCISE_CATEGORY_RUN                                                (FIT_CAST(FIT_EXERCISE_CATEGORY, 32))
#define FIT_EXERCISE_CATEGORY_BIKE                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 33))
#define FIT_EXERCISE_CATEGORY_CARDIO_SENSORS                                     (FIT_CAST(FIT_EXERCISE_CATEGORY, 34)) // Exercises within workouts that use GPS/sensors rather than rep counting
#define FIT_EXERCISE_CATEGORY_MOVE                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 35))
#define FIT_EXERCISE_CATEGORY_POSE                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 36))
#define FIT_EXERCISE_CATEGORY_BANDED_EXERCISES                                   (FIT_CAST(FIT_EXERCISE_CATEGORY, 37))
#define FIT_EXERCISE_CATEGORY_BATTLE_ROPE                                        (FIT_CAST(FIT_EXERCISE_CATEGORY, 38))
#define FIT_EXERCISE_CATEGORY_ELLIPTICAL                                         (FIT_CAST(FIT_EXERCISE_CATEGORY, 39))
#define FIT_EXERCISE_CATEGORY_FLOOR_CLIMB                                        (FIT_CAST(FIT_EXERCISE_CATEGORY, 40))
#define FIT_EXERCISE_CATEGORY_INDOOR_BIKE                                        (FIT_CAST(FIT_EXERCISE_CATEGORY, 41))
#define FIT_EXERCISE_CATEGORY_INDOOR_ROW                                         (FIT_CAST(FIT_EXERCISE_CATEGORY, 42))
#define FIT_EXERCISE_CATEGORY_LADDER                                             (FIT_CAST(FIT_EXERCISE_CATEGORY, 43))
#define FIT_EXERCISE_CATEGORY_SANDBAG                                            (FIT_CAST(FIT_EXERCISE_CATEGORY, 44))
#define FIT_EXERCISE_CATEGORY_SLED                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 45))
#define FIT_EXERCISE_CATEGORY_SLEDGE_HAMMER                                      (FIT_CAST(FIT_EXERCISE_CATEGORY, 46))
#define FIT_EXERCISE_CATEGORY_STAIR_STEPPER                                      (FIT_CAST(FIT_EXERCISE_CATEGORY, 47))
#define FIT_EXERCISE_CATEGORY_SUSPENSION                                         (FIT_CAST(FIT_EXERCISE_CATEGORY, 49))
#define FIT_EXERCISE_CATEGORY_TIRE                                               (FIT_CAST(FIT_EXERCISE_CATEGORY, 50))
#define FIT_EXERCISE_CATEGORY_RUN_INDOOR                                         (FIT_CAST(FIT_EXERCISE_CATEGORY, 52))
#define FIT_EXERCISE_CATEGORY_BIKE_OUTDOOR                                       (FIT_CAST(FIT_EXERCISE_CATEGORY, 53))
#define FIT_EXERCISE_CATEGORY_UNKNOWN                                            (FIT_CAST(FIT_EXERCISE_CATEGORY, 65534))
#define FIT_EXERCISE_CATEGORY_COUNT                                              53

typedef FIT_UINT16 FIT_BENCH_PRESS_EXERCISE_NAME;
#define FIT_BENCH_PRESS_EXERCISE_NAME_INVALID                                    FIT_UINT16_INVALID
#define FIT_BENCH_PRESS_EXERCISE_NAME_ALTERNATING_DUMBBELL_CHEST_PRESS_ON_SWISS_BALL (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 0))
#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_BENCH_PRESS                        (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 1))
#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_BOARD_BENCH_PRESS                  (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 2))
#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_FLOOR_PRESS                        (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 3))
#define FIT_BENCH_PRESS_EXERCISE_NAME_CLOSE_GRIP_BARBELL_BENCH_PRESS             (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 4))
#define FIT_BENCH_PRESS_EXERCISE_NAME_DECLINE_DUMBBELL_BENCH_PRESS               (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 5))
#define FIT_BENCH_PRESS_EXERCISE_NAME_DUMBBELL_BENCH_PRESS                       (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 6))
#define FIT_BENCH_PRESS_EXERCISE_NAME_DUMBBELL_FLOOR_PRESS                       (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 7))
#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_BARBELL_BENCH_PRESS                (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 8))
#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_DUMBBELL_BENCH_PRESS               (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 9))
#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_SMITH_MACHINE_BENCH_PRESS          (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 10))
#define FIT_BENCH_PRESS_EXERCISE_NAME_ISOMETRIC_BARBELL_BENCH_PRESS              (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 11))
#define FIT_BENCH_PRESS_EXERCISE_NAME_KETTLEBELL_CHEST_PRESS                     (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 12))
#define FIT_BENCH_PRESS_EXERCISE_NAME_NEUTRAL_GRIP_DUMBBELL_BENCH_PRESS          (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 13))
#define FIT_BENCH_PRESS_EXERCISE_NAME_NEUTRAL_GRIP_DUMBBELL_INCLINE_BENCH_PRESS  (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 14))
#define FIT_BENCH_PRESS_EXERCISE_NAME_ONE_ARM_FLOOR_PRESS                        (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 15))
#define FIT_BENCH_PRESS_EXERCISE_NAME_WEIGHTED_ONE_ARM_FLOOR_PRESS               (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 16))
#define FIT_BENCH_PRESS_EXERCISE_NAME_PARTIAL_LOCKOUT                            (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 17))
#define FIT_BENCH_PRESS_EXERCISE_NAME_REVERSE_GRIP_BARBELL_BENCH_PRESS           (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 18))
#define FIT_BENCH_PRESS_EXERCISE_NAME_REVERSE_GRIP_INCLINE_BENCH_PRESS           (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 19))
#define FIT_BENCH_PRESS_EXERCISE_NAME_SINGLE_ARM_CABLE_CHEST_PRESS               (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 20))
#define FIT_BENCH_PRESS_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_BENCH_PRESS            (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 21))
#define FIT_BENCH_PRESS_EXERCISE_NAME_SMITH_MACHINE_BENCH_PRESS                  (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 22))
#define FIT_BENCH_PRESS_EXERCISE_NAME_SWISS_BALL_DUMBBELL_CHEST_PRESS            (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 23))
#define FIT_BENCH_PRESS_EXERCISE_NAME_TRIPLE_STOP_BARBELL_BENCH_PRESS            (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 24))
#define FIT_BENCH_PRESS_EXERCISE_NAME_WIDE_GRIP_BARBELL_BENCH_PRESS              (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 25))
#define FIT_BENCH_PRESS_EXERCISE_NAME_ALTERNATING_DUMBBELL_CHEST_PRESS           (FIT_CAST(FIT_BENCH_PRESS_EXERCISE_NAME, 26))
#define FIT_BENCH_PRESS_EXERCISE_NAME_COUNT                                      27

typedef FIT_UINT16 FIT_CALF_RAISE_EXERCISE_NAME;
#define FIT_CALF_RAISE_EXERCISE_NAME_INVALID                                     FIT_UINT16_INVALID
#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_CALF_RAISE                            (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 0))
#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_WEIGHTED_CALF_RAISE                   (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 1))
#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_SINGLE_LEG_CALF_RAISE                 (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 2))
#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_WEIGHTED_SINGLE_LEG_CALF_RAISE        (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 3))
#define FIT_CALF_RAISE_EXERCISE_NAME_DONKEY_CALF_RAISE                           (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 4))
#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_DONKEY_CALF_RAISE                  (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 5))
#define FIT_CALF_RAISE_EXERCISE_NAME_SEATED_CALF_RAISE                           (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 6))
#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SEATED_CALF_RAISE                  (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 7))
#define FIT_CALF_RAISE_EXERCISE_NAME_SEATED_DUMBBELL_TOE_RAISE                   (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 8))
#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_BENT_KNEE_CALF_RAISE             (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 9))
#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENT_KNEE_CALF_RAISE    (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 10))
#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_DECLINE_PUSH_UP                  (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 11))
#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_DONKEY_CALF_RAISE                (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 12))
#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_DONKEY_CALF_RAISE       (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 13))
#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_KNEE_HOLD         (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 14))
#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_STANDING_CALF_RAISE              (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 15))
#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_STANDING_DUMBBELL_CALF_RAISE     (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 16))
#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_BARBELL_CALF_RAISE                 (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 17))
#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_CALF_RAISE                         (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 18))
#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_STANDING_CALF_RAISE                (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 19))
#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_DUMBBELL_CALF_RAISE                (FIT_CAST(FIT_CALF_RAISE_EXERCISE_NAME, 20))
#define FIT_CALF_RAISE_EXERCISE_NAME_COUNT                                       21

typedef FIT_UINT16 FIT_CARDIO_EXERCISE_NAME;
#define FIT_CARDIO_EXERCISE_NAME_INVALID                                         FIT_UINT16_INVALID
#define FIT_CARDIO_EXERCISE_NAME_BOB_AND_WEAVE_CIRCLE                            (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 0))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_BOB_AND_WEAVE_CIRCLE                   (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 1))
#define FIT_CARDIO_EXERCISE_NAME_CARDIO_CORE_CRAWL                               (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 2))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_CARDIO_CORE_CRAWL                      (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 3))
#define FIT_CARDIO_EXERCISE_NAME_DOUBLE_UNDER                                    (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 4))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_DOUBLE_UNDER                           (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 5))
#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE                                       (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 6))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE                              (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 7))
#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE_CROSSOVER                             (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 8))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE_CROSSOVER                    (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 9))
#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE_JOG                                   (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 10))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE_JOG                          (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 11))
#define FIT_CARDIO_EXERCISE_NAME_JUMPING_JACKS                                   (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 12))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMPING_JACKS                          (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 13))
#define FIT_CARDIO_EXERCISE_NAME_SKI_MOGULS                                      (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 14))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SKI_MOGULS                             (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 15))
#define FIT_CARDIO_EXERCISE_NAME_SPLIT_JACKS                                     (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 16))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SPLIT_JACKS                            (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 17))
#define FIT_CARDIO_EXERCISE_NAME_SQUAT_JACKS                                     (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 18))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SQUAT_JACKS                            (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 19))
#define FIT_CARDIO_EXERCISE_NAME_TRIPLE_UNDER                                    (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 20))
#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_TRIPLE_UNDER                           (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 21))
#define FIT_CARDIO_EXERCISE_NAME_ELLIPTICAL                                      (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 22))
#define FIT_CARDIO_EXERCISE_NAME_SPINNING                                        (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 23))
#define FIT_CARDIO_EXERCISE_NAME_POLE_PADDLE_FORWARD_WHEELCHAIR                  (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 24))
#define FIT_CARDIO_EXERCISE_NAME_POLE_PADDLE_BACKWARD_WHEELCHAIR                 (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 25))
#define FIT_CARDIO_EXERCISE_NAME_POLE_HANDCYCLE_FORWARD_WHEELCHAIR               (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 26))
#define FIT_CARDIO_EXERCISE_NAME_POLE_HANDCYCLE_BACKWARD_WHEELCHAIR              (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 27))
#define FIT_CARDIO_EXERCISE_NAME_POLE_RAINBOW_WHEELCHAIR                         (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 28))
#define FIT_CARDIO_EXERCISE_NAME_DOUBLE_PUNCH_FORWARD_WHEELCHAIR                 (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 29))
#define FIT_CARDIO_EXERCISE_NAME_DOUBLE_PUNCH_DOWN_WHEELCHAIR                    (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 30))
#define FIT_CARDIO_EXERCISE_NAME_DOUBLE_PUNCH_SIDEWAYS_WHEELCHAIR                (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 31))
#define FIT_CARDIO_EXERCISE_NAME_DOUBLE_PUNCH_UP_WHEELCHAIR                      (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 32))
#define FIT_CARDIO_EXERCISE_NAME_SIT_SKI_WHEELCHAIR                              (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 33))
#define FIT_CARDIO_EXERCISE_NAME_SITTING_JACKS_WHEELCHAIR                        (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 34))
#define FIT_CARDIO_EXERCISE_NAME_PUNCH_FORWARD_WHEELCHAIR                        (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 35))
#define FIT_CARDIO_EXERCISE_NAME_PUNCH_DOWN_WHEELCHAIR                           (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 36))
#define FIT_CARDIO_EXERCISE_NAME_PUNCH_SIDEWAYS_WHEELCHAIR                       (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 37))
#define FIT_CARDIO_EXERCISE_NAME_PUNCH_UP_WHEELCHAIR                             (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 38))
#define FIT_CARDIO_EXERCISE_NAME_PUNCH_BAG_WHEELCHAIR                            (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 39))
#define FIT_CARDIO_EXERCISE_NAME_POLE_DD_FF_UU_WHEELCHAIR                        (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 40))
#define FIT_CARDIO_EXERCISE_NAME_BUTTERFLY_ARMS_WHEELCHAIR                       (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 41))
#define FIT_CARDIO_EXERCISE_NAME_PUNCH                                           (FIT_CAST(FIT_CARDIO_EXERCISE_NAME, 42))
#define FIT_CARDIO_EXERCISE_NAME_COUNT                                           43

typedef FIT_UINT16 FIT_CARRY_EXERCISE_NAME;
#define FIT_CARRY_EXERCISE_NAME_INVALID                                          FIT_UINT16_INVALID
#define FIT_CARRY_EXERCISE_NAME_BAR_HOLDS                                        (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 0))
#define FIT_CARRY_EXERCISE_NAME_FARMERS_WALK                                     (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 1))
#define FIT_CARRY_EXERCISE_NAME_FARMERS_WALK_ON_TOES                             (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 2))
#define FIT_CARRY_EXERCISE_NAME_HEX_DUMBBELL_HOLD                                (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 3))
#define FIT_CARRY_EXERCISE_NAME_OVERHEAD_CARRY                                   (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 4))
#define FIT_CARRY_EXERCISE_NAME_DUMBBELL_WAITER_CARRY                            (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 5))
#define FIT_CARRY_EXERCISE_NAME_FARMERS_CARRY_WALK_LUNGE                         (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 6))
#define FIT_CARRY_EXERCISE_NAME_FARMERS_CARRY                                    (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 7))
#define FIT_CARRY_EXERCISE_NAME_FARMERS_CARRY_ON_TOES                            (FIT_CAST(FIT_CARRY_EXERCISE_NAME, 8))
#define FIT_CARRY_EXERCISE_NAME_COUNT                                            9

typedef FIT_UINT16 FIT_CHOP_EXERCISE_NAME;
#define FIT_CHOP_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_CHOP_EXERCISE_NAME_CABLE_PULL_THROUGH                                (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 0))
#define FIT_CHOP_EXERCISE_NAME_CABLE_ROTATIONAL_LIFT                             (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 1))
#define FIT_CHOP_EXERCISE_NAME_CABLE_WOODCHOP                                    (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 2))
#define FIT_CHOP_EXERCISE_NAME_CROSS_CHOP_TO_KNEE                                (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 3))
#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_CROSS_CHOP_TO_KNEE                       (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 4))
#define FIT_CHOP_EXERCISE_NAME_DUMBBELL_CHOP                                     (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 5))
#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATION                            (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 6))
#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_HALF_KNEELING_ROTATION                   (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 7))
#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATIONAL_CHOP                     (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 8))
#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATIONAL_REVERSE_CHOP             (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 9))
#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_STABILITY_CHOP                      (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 10))
#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_STABILITY_REVERSE_CHOP              (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 11))
#define FIT_CHOP_EXERCISE_NAME_KNEELING_ROTATIONAL_CHOP                          (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 12))
#define FIT_CHOP_EXERCISE_NAME_KNEELING_ROTATIONAL_REVERSE_CHOP                  (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 13))
#define FIT_CHOP_EXERCISE_NAME_KNEELING_STABILITY_CHOP                           (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 14))
#define FIT_CHOP_EXERCISE_NAME_KNEELING_WOODCHOPPER                              (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 15))
#define FIT_CHOP_EXERCISE_NAME_MEDICINE_BALL_WOOD_CHOPS                          (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 16))
#define FIT_CHOP_EXERCISE_NAME_POWER_SQUAT_CHOPS                                 (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 17))
#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_POWER_SQUAT_CHOPS                        (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 18))
#define FIT_CHOP_EXERCISE_NAME_STANDING_ROTATIONAL_CHOP                          (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 19))
#define FIT_CHOP_EXERCISE_NAME_STANDING_SPLIT_ROTATIONAL_CHOP                    (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 20))
#define FIT_CHOP_EXERCISE_NAME_STANDING_SPLIT_ROTATIONAL_REVERSE_CHOP            (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 21))
#define FIT_CHOP_EXERCISE_NAME_STANDING_STABILITY_REVERSE_CHOP                   (FIT_CAST(FIT_CHOP_EXERCISE_NAME, 22))
#define FIT_CHOP_EXERCISE_NAME_COUNT                                             23

typedef FIT_UINT16 FIT_CORE_EXERCISE_NAME;
#define FIT_CORE_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_CORE_EXERCISE_NAME_ABS_JABS                                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 0))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ABS_JABS                                 (FIT_CAST(FIT_CORE_EXERCISE_NAME, 1))
#define FIT_CORE_EXERCISE_NAME_ALTERNATING_PLATE_REACH                           (FIT_CAST(FIT_CORE_EXERCISE_NAME, 2))
#define FIT_CORE_EXERCISE_NAME_BARBELL_ROLLOUT                                   (FIT_CAST(FIT_CORE_EXERCISE_NAME, 3))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_BARBELL_ROLLOUT                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 4))
#define FIT_CORE_EXERCISE_NAME_BODY_BAR_OBLIQUE_TWIST                            (FIT_CAST(FIT_CORE_EXERCISE_NAME, 5))
#define FIT_CORE_EXERCISE_NAME_CABLE_CORE_PRESS                                  (FIT_CAST(FIT_CORE_EXERCISE_NAME, 6))
#define FIT_CORE_EXERCISE_NAME_CABLE_SIDE_BEND                                   (FIT_CAST(FIT_CORE_EXERCISE_NAME, 7))
#define FIT_CORE_EXERCISE_NAME_SIDE_BEND                                         (FIT_CAST(FIT_CORE_EXERCISE_NAME, 8))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SIDE_BEND                                (FIT_CAST(FIT_CORE_EXERCISE_NAME, 9))
#define FIT_CORE_EXERCISE_NAME_CRESCENT_CIRCLE                                   (FIT_CAST(FIT_CORE_EXERCISE_NAME, 10))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_CRESCENT_CIRCLE                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 11))
#define FIT_CORE_EXERCISE_NAME_CYCLING_RUSSIAN_TWIST                             (FIT_CAST(FIT_CORE_EXERCISE_NAME, 12))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_CYCLING_RUSSIAN_TWIST                    (FIT_CAST(FIT_CORE_EXERCISE_NAME, 13))
#define FIT_CORE_EXERCISE_NAME_ELEVATED_FEET_RUSSIAN_TWIST                       (FIT_CAST(FIT_CORE_EXERCISE_NAME, 14))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_RUSSIAN_TWIST              (FIT_CAST(FIT_CORE_EXERCISE_NAME, 15))
#define FIT_CORE_EXERCISE_NAME_HALF_TURKISH_GET_UP                               (FIT_CAST(FIT_CORE_EXERCISE_NAME, 16))
#define FIT_CORE_EXERCISE_NAME_KETTLEBELL_WINDMILL                               (FIT_CAST(FIT_CORE_EXERCISE_NAME, 17))
#define FIT_CORE_EXERCISE_NAME_KNEELING_AB_WHEEL                                 (FIT_CAST(FIT_CORE_EXERCISE_NAME, 18))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_KNEELING_AB_WHEEL                        (FIT_CAST(FIT_CORE_EXERCISE_NAME, 19))
#define FIT_CORE_EXERCISE_NAME_MODIFIED_FRONT_LEVER                              (FIT_CAST(FIT_CORE_EXERCISE_NAME, 20))
#define FIT_CORE_EXERCISE_NAME_OPEN_KNEE_TUCKS                                   (FIT_CAST(FIT_CORE_EXERCISE_NAME, 21))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_OPEN_KNEE_TUCKS                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 22))
#define FIT_CORE_EXERCISE_NAME_SIDE_ABS_LEG_LIFT                                 (FIT_CAST(FIT_CORE_EXERCISE_NAME, 23))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SIDE_ABS_LEG_LIFT                        (FIT_CAST(FIT_CORE_EXERCISE_NAME, 24))
#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_JACKKNIFE                              (FIT_CAST(FIT_CORE_EXERCISE_NAME, 25))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_JACKKNIFE                     (FIT_CAST(FIT_CORE_EXERCISE_NAME, 26))
#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_PIKE                                   (FIT_CAST(FIT_CORE_EXERCISE_NAME, 27))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PIKE                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 28))
#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_ROLLOUT                                (FIT_CAST(FIT_CORE_EXERCISE_NAME, 29))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_ROLLOUT                       (FIT_CAST(FIT_CORE_EXERCISE_NAME, 30))
#define FIT_CORE_EXERCISE_NAME_TRIANGLE_HIP_PRESS                                (FIT_CAST(FIT_CORE_EXERCISE_NAME, 31))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_TRIANGLE_HIP_PRESS                       (FIT_CAST(FIT_CORE_EXERCISE_NAME, 32))
#define FIT_CORE_EXERCISE_NAME_TRX_SUSPENDED_JACKKNIFE                           (FIT_CAST(FIT_CORE_EXERCISE_NAME, 33))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_TRX_SUSPENDED_JACKKNIFE                  (FIT_CAST(FIT_CORE_EXERCISE_NAME, 34))
#define FIT_CORE_EXERCISE_NAME_U_BOAT                                            (FIT_CAST(FIT_CORE_EXERCISE_NAME, 35))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_U_BOAT                                   (FIT_CAST(FIT_CORE_EXERCISE_NAME, 36))
#define FIT_CORE_EXERCISE_NAME_WINDMILL_SWITCHES                                 (FIT_CAST(FIT_CORE_EXERCISE_NAME, 37))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_WINDMILL_SWITCHES                        (FIT_CAST(FIT_CORE_EXERCISE_NAME, 38))
#define FIT_CORE_EXERCISE_NAME_ALTERNATING_SLIDE_OUT                             (FIT_CAST(FIT_CORE_EXERCISE_NAME, 39))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ALTERNATING_SLIDE_OUT                    (FIT_CAST(FIT_CORE_EXERCISE_NAME, 40))
#define FIT_CORE_EXERCISE_NAME_GHD_BACK_EXTENSIONS                               (FIT_CAST(FIT_CORE_EXERCISE_NAME, 41))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_GHD_BACK_EXTENSIONS                      (FIT_CAST(FIT_CORE_EXERCISE_NAME, 42))
#define FIT_CORE_EXERCISE_NAME_OVERHEAD_WALK                                     (FIT_CAST(FIT_CORE_EXERCISE_NAME, 43))
#define FIT_CORE_EXERCISE_NAME_INCHWORM                                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 44))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_MODIFIED_FRONT_LEVER                     (FIT_CAST(FIT_CORE_EXERCISE_NAME, 45))
#define FIT_CORE_EXERCISE_NAME_RUSSIAN_TWIST                                     (FIT_CAST(FIT_CORE_EXERCISE_NAME, 46))
#define FIT_CORE_EXERCISE_NAME_ABDOMINAL_LEG_ROTATIONS                           (FIT_CAST(FIT_CORE_EXERCISE_NAME, 47)) // Deprecated do not use
#define FIT_CORE_EXERCISE_NAME_ARM_AND_LEG_EXTENSION_ON_KNEES                    (FIT_CAST(FIT_CORE_EXERCISE_NAME, 48))
#define FIT_CORE_EXERCISE_NAME_BICYCLE                                           (FIT_CAST(FIT_CORE_EXERCISE_NAME, 49))
#define FIT_CORE_EXERCISE_NAME_BICEP_CURL_WITH_LEG_EXTENSION                     (FIT_CAST(FIT_CORE_EXERCISE_NAME, 50))
#define FIT_CORE_EXERCISE_NAME_CAT_COW                                           (FIT_CAST(FIT_CORE_EXERCISE_NAME, 51))
#define FIT_CORE_EXERCISE_NAME_CORKSCREW                                         (FIT_CAST(FIT_CORE_EXERCISE_NAME, 52))
#define FIT_CORE_EXERCISE_NAME_CRISS_CROSS                                       (FIT_CAST(FIT_CORE_EXERCISE_NAME, 53))
#define FIT_CORE_EXERCISE_NAME_CRISS_CROSS_WITH_BALL                             (FIT_CAST(FIT_CORE_EXERCISE_NAME, 54)) // Deprecated do not use
#define FIT_CORE_EXERCISE_NAME_DOUBLE_LEG_STRETCH                                (FIT_CAST(FIT_CORE_EXERCISE_NAME, 55))
#define FIT_CORE_EXERCISE_NAME_KNEE_FOLDS                                        (FIT_CAST(FIT_CORE_EXERCISE_NAME, 56))
#define FIT_CORE_EXERCISE_NAME_LOWER_LIFT                                        (FIT_CAST(FIT_CORE_EXERCISE_NAME, 57))
#define FIT_CORE_EXERCISE_NAME_NECK_PULL                                         (FIT_CAST(FIT_CORE_EXERCISE_NAME, 58))
#define FIT_CORE_EXERCISE_NAME_PELVIC_CLOCKS                                     (FIT_CAST(FIT_CORE_EXERCISE_NAME, 59))
#define FIT_CORE_EXERCISE_NAME_ROLL_OVER                                         (FIT_CAST(FIT_CORE_EXERCISE_NAME, 60))
#define FIT_CORE_EXERCISE_NAME_ROLL_UP                                           (FIT_CAST(FIT_CORE_EXERCISE_NAME, 61))
#define FIT_CORE_EXERCISE_NAME_ROLLING                                           (FIT_CAST(FIT_CORE_EXERCISE_NAME, 62))
#define FIT_CORE_EXERCISE_NAME_ROWING_1                                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 63))
#define FIT_CORE_EXERCISE_NAME_ROWING_2                                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 64))
#define FIT_CORE_EXERCISE_NAME_SCISSORS                                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 65))
#define FIT_CORE_EXERCISE_NAME_SINGLE_LEG_CIRCLES                                (FIT_CAST(FIT_CORE_EXERCISE_NAME, 66))
#define FIT_CORE_EXERCISE_NAME_SINGLE_LEG_STRETCH                                (FIT_CAST(FIT_CORE_EXERCISE_NAME, 67))
#define FIT_CORE_EXERCISE_NAME_SNAKE_TWIST_1_AND_2                               (FIT_CAST(FIT_CORE_EXERCISE_NAME, 68)) // Deprecated do not use
#define FIT_CORE_EXERCISE_NAME_SWAN                                              (FIT_CAST(FIT_CORE_EXERCISE_NAME, 69))
#define FIT_CORE_EXERCISE_NAME_SWIMMING                                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 70))
#define FIT_CORE_EXERCISE_NAME_TEASER                                            (FIT_CAST(FIT_CORE_EXERCISE_NAME, 71))
#define FIT_CORE_EXERCISE_NAME_THE_HUNDRED                                       (FIT_CAST(FIT_CORE_EXERCISE_NAME, 72))
#define FIT_CORE_EXERCISE_NAME_BICEP_CURL_WITH_LEG_EXTENSION_WITH_WEIGHTS        (FIT_CAST(FIT_CORE_EXERCISE_NAME, 73))
#define FIT_CORE_EXERCISE_NAME_HANGING_L_SIT                                     (FIT_CAST(FIT_CORE_EXERCISE_NAME, 75))
#define FIT_CORE_EXERCISE_NAME_LOWER_LIFT_WITH_WEIGHTS                           (FIT_CAST(FIT_CORE_EXERCISE_NAME, 77))
#define FIT_CORE_EXERCISE_NAME_RING_L_SIT                                        (FIT_CAST(FIT_CORE_EXERCISE_NAME, 79))
#define FIT_CORE_EXERCISE_NAME_ROWING_1_WITH_WEIGHTS                             (FIT_CAST(FIT_CORE_EXERCISE_NAME, 80))
#define FIT_CORE_EXERCISE_NAME_ROWING_2_WITH_WEIGHTS                             (FIT_CAST(FIT_CORE_EXERCISE_NAME, 81))
#define FIT_CORE_EXERCISE_NAME_SCISSORS_WITH_WEIGHTS                             (FIT_CAST(FIT_CORE_EXERCISE_NAME, 82))
#define FIT_CORE_EXERCISE_NAME_SINGLE_LEG_STRETCH_WITH_WEIGHTS                   (FIT_CAST(FIT_CORE_EXERCISE_NAME, 83))
#define FIT_CORE_EXERCISE_NAME_TOES_TO_ELBOWS                                    (FIT_CAST(FIT_CORE_EXERCISE_NAME, 84))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_CRISS_CROSS                              (FIT_CAST(FIT_CORE_EXERCISE_NAME, 85))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_DOUBLE_LEG_STRETCH                       (FIT_CAST(FIT_CORE_EXERCISE_NAME, 86))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_THE_HUNDRED                              (FIT_CAST(FIT_CORE_EXERCISE_NAME, 87))
#define FIT_CORE_EXERCISE_NAME_L_SIT                                             (FIT_CAST(FIT_CORE_EXERCISE_NAME, 88))
#define FIT_CORE_EXERCISE_NAME_TURKISH_GET_UP                                    (FIT_CAST(FIT_CORE_EXERCISE_NAME, 89))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_RING_L_SIT                               (FIT_CAST(FIT_CORE_EXERCISE_NAME, 90))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_HANGING_L_SIT                            (FIT_CAST(FIT_CORE_EXERCISE_NAME, 91))
#define FIT_CORE_EXERCISE_NAME_WEIGHTED_L_SIT                                    (FIT_CAST(FIT_CORE_EXERCISE_NAME, 92))
#define FIT_CORE_EXERCISE_NAME_SIDE_BEND_LOW_WHEELCHAIR                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 93))
#define FIT_CORE_EXERCISE_NAME_SIDE_BEND_MID_WHEELCHAIR                          (FIT_CAST(FIT_CORE_EXERCISE_NAME, 94))
#define FIT_CORE_EXERCISE_NAME_SIDE_BEND_HIGH_WHEELCHAIR                         (FIT_CAST(FIT_CORE_EXERCISE_NAME, 95))
#define FIT_CORE_EXERCISE_NAME_SEATED_SIDE_BEND                                  (FIT_CAST(FIT_CORE_EXERCISE_NAME, 96))
#define FIT_CORE_EXERCISE_NAME_COUNT                                             94

typedef FIT_UINT16 FIT_CRUNCH_EXERCISE_NAME;
#define FIT_CRUNCH_EXERCISE_NAME_INVALID                                         FIT_UINT16_INVALID
#define FIT_CRUNCH_EXERCISE_NAME_BICYCLE_CRUNCH                                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 0))
#define FIT_CRUNCH_EXERCISE_NAME_CABLE_CRUNCH                                    (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 1))
#define FIT_CRUNCH_EXERCISE_NAME_CIRCULAR_ARM_CRUNCH                             (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 2))
#define FIT_CRUNCH_EXERCISE_NAME_CROSSED_ARMS_CRUNCH                             (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 3))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CROSSED_ARMS_CRUNCH                    (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 4))
#define FIT_CRUNCH_EXERCISE_NAME_CROSS_LEG_REVERSE_CRUNCH                        (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 5))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CROSS_LEG_REVERSE_CRUNCH               (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 6))
#define FIT_CRUNCH_EXERCISE_NAME_CRUNCH_CHOP                                     (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 7))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CRUNCH_CHOP                            (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 8))
#define FIT_CRUNCH_EXERCISE_NAME_DOUBLE_CRUNCH                                   (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 9))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_DOUBLE_CRUNCH                          (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 10))
#define FIT_CRUNCH_EXERCISE_NAME_ELBOW_TO_KNEE_CRUNCH                            (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 11))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_ELBOW_TO_KNEE_CRUNCH                   (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 12))
#define FIT_CRUNCH_EXERCISE_NAME_FLUTTER_KICKS                                   (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 13))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_FLUTTER_KICKS                          (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 14))
#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_ON_BENCH             (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 15))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_FOAM_ROLLER_REVERSE_CRUNCH_ON_BENCH    (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 16))
#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_WITH_DUMBBELL        (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 17))
#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_WITH_MEDICINE_BALL   (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 18))
#define FIT_CRUNCH_EXERCISE_NAME_FROG_PRESS                                      (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 19))
#define FIT_CRUNCH_EXERCISE_NAME_HANGING_KNEE_RAISE_OBLIQUE_CRUNCH               (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 20))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HANGING_KNEE_RAISE_OBLIQUE_CRUNCH      (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 21))
#define FIT_CRUNCH_EXERCISE_NAME_HIP_CROSSOVER                                   (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 22))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HIP_CROSSOVER                          (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 23))
#define FIT_CRUNCH_EXERCISE_NAME_HOLLOW_ROCK                                     (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 24))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HOLLOW_ROCK                            (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 25))
#define FIT_CRUNCH_EXERCISE_NAME_INCLINE_REVERSE_CRUNCH                          (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 26))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_INCLINE_REVERSE_CRUNCH                 (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 27))
#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_CABLE_CRUNCH                           (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 28))
#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_CROSS_CRUNCH                           (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 29))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_KNEELING_CROSS_CRUNCH                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 30))
#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_OBLIQUE_CABLE_CRUNCH                   (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 31))
#define FIT_CRUNCH_EXERCISE_NAME_KNEES_TO_ELBOW                                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 32))
#define FIT_CRUNCH_EXERCISE_NAME_LEG_EXTENSIONS                                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 33))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_LEG_EXTENSIONS                         (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 34))
#define FIT_CRUNCH_EXERCISE_NAME_LEG_LEVERS                                      (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 35))
#define FIT_CRUNCH_EXERCISE_NAME_MCGILL_CURL_UP                                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 36))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_MCGILL_CURL_UP                         (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 37))
#define FIT_CRUNCH_EXERCISE_NAME_MODIFIED_PILATES_ROLL_UP_WITH_BALL              (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 38))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_MODIFIED_PILATES_ROLL_UP_WITH_BALL     (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 39))
#define FIT_CRUNCH_EXERCISE_NAME_PILATES_CRUNCH                                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 40))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_PILATES_CRUNCH                         (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 41))
#define FIT_CRUNCH_EXERCISE_NAME_PILATES_ROLL_UP_WITH_BALL                       (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 42))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_PILATES_ROLL_UP_WITH_BALL              (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 43))
#define FIT_CRUNCH_EXERCISE_NAME_RAISED_LEGS_CRUNCH                              (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 44))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_RAISED_LEGS_CRUNCH                     (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 45))
#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CRUNCH                                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 46))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CRUNCH                         (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 47))
#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CRUNCH_ON_A_BENCH                       (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 48))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CRUNCH_ON_A_BENCH              (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 49))
#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CURL_AND_LIFT                           (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 50))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CURL_AND_LIFT                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 51))
#define FIT_CRUNCH_EXERCISE_NAME_ROTATIONAL_LIFT                                 (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 52))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_ROTATIONAL_LIFT                        (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 53))
#define FIT_CRUNCH_EXERCISE_NAME_SEATED_ALTERNATING_REVERSE_CRUNCH               (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 54))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SEATED_ALTERNATING_REVERSE_CRUNCH      (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 55))
#define FIT_CRUNCH_EXERCISE_NAME_SEATED_LEG_U                                    (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 56))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SEATED_LEG_U                           (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 57))
#define FIT_CRUNCH_EXERCISE_NAME_SIDE_TO_SIDE_CRUNCH_AND_WEAVE                   (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 58))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_CRUNCH_AND_WEAVE          (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 59))
#define FIT_CRUNCH_EXERCISE_NAME_SINGLE_LEG_REVERSE_CRUNCH                       (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 60))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_REVERSE_CRUNCH              (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 61))
#define FIT_CRUNCH_EXERCISE_NAME_SKATER_CRUNCH_CROSS                             (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 62))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SKATER_CRUNCH_CROSS                    (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 63))
#define FIT_CRUNCH_EXERCISE_NAME_STANDING_CABLE_CRUNCH                           (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 64))
#define FIT_CRUNCH_EXERCISE_NAME_STANDING_SIDE_CRUNCH                            (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 65))
#define FIT_CRUNCH_EXERCISE_NAME_STEP_CLIMB                                      (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 66))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_STEP_CLIMB                             (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 67))
#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_CRUNCH                               (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 68))
#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_REVERSE_CRUNCH                       (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 69))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_REVERSE_CRUNCH              (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 70))
#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_RUSSIAN_TWIST                        (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 71))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_RUSSIAN_TWIST               (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 72))
#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_SIDE_CRUNCH                          (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 73))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_SIDE_CRUNCH                 (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 74))
#define FIT_CRUNCH_EXERCISE_NAME_THORACIC_CRUNCHES_ON_FOAM_ROLLER                (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 75))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_THORACIC_CRUNCHES_ON_FOAM_ROLLER       (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 76))
#define FIT_CRUNCH_EXERCISE_NAME_TRICEPS_CRUNCH                                  (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 77))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_BICYCLE_CRUNCH                         (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 78))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CRUNCH                                 (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 79))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_CRUNCH                      (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 80))
#define FIT_CRUNCH_EXERCISE_NAME_TOES_TO_BAR                                     (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 81))
#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_TOES_TO_BAR                            (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 82))
#define FIT_CRUNCH_EXERCISE_NAME_CRUNCH                                          (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 83))
#define FIT_CRUNCH_EXERCISE_NAME_STRAIGHT_LEG_CRUNCH_WITH_BALL                   (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 84))
#define FIT_CRUNCH_EXERCISE_NAME_LEG_CLIMB_CRUNCH                                (FIT_CAST(FIT_CRUNCH_EXERCISE_NAME, 86))
#define FIT_CRUNCH_EXERCISE_NAME_COUNT                                           86

typedef FIT_UINT16 FIT_CURL_EXERCISE_NAME;
#define FIT_CURL_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_CURL_EXERCISE_NAME_ALTERNATING_DUMBBELL_BICEPS_CURL                  (FIT_CAST(FIT_CURL_EXERCISE_NAME, 0))
#define FIT_CURL_EXERCISE_NAME_ALTERNATING_DUMBBELL_BICEPS_CURL_ON_SWISS_BALL    (FIT_CAST(FIT_CURL_EXERCISE_NAME, 1))
#define FIT_CURL_EXERCISE_NAME_ALTERNATING_INCLINE_DUMBBELL_BICEPS_CURL          (FIT_CAST(FIT_CURL_EXERCISE_NAME, 2))
#define FIT_CURL_EXERCISE_NAME_BARBELL_BICEPS_CURL                               (FIT_CAST(FIT_CURL_EXERCISE_NAME, 3))
#define FIT_CURL_EXERCISE_NAME_BARBELL_REVERSE_WRIST_CURL                        (FIT_CAST(FIT_CURL_EXERCISE_NAME, 4))
#define FIT_CURL_EXERCISE_NAME_BARBELL_WRIST_CURL                                (FIT_CAST(FIT_CURL_EXERCISE_NAME, 5))
#define FIT_CURL_EXERCISE_NAME_BEHIND_THE_BACK_BARBELL_REVERSE_WRIST_CURL        (FIT_CAST(FIT_CURL_EXERCISE_NAME, 6))
#define FIT_CURL_EXERCISE_NAME_BEHIND_THE_BACK_ONE_ARM_CABLE_CURL                (FIT_CAST(FIT_CURL_EXERCISE_NAME, 7))
#define FIT_CURL_EXERCISE_NAME_CABLE_BICEPS_CURL                                 (FIT_CAST(FIT_CURL_EXERCISE_NAME, 8))
#define FIT_CURL_EXERCISE_NAME_CABLE_HAMMER_CURL                                 (FIT_CAST(FIT_CURL_EXERCISE_NAME, 9))
#define FIT_CURL_EXERCISE_NAME_CHEATING_BARBELL_BICEPS_CURL                      (FIT_CAST(FIT_CURL_EXERCISE_NAME, 10))
#define FIT_CURL_EXERCISE_NAME_CLOSE_GRIP_EZ_BAR_BICEPS_CURL                     (FIT_CAST(FIT_CURL_EXERCISE_NAME, 11))
#define FIT_CURL_EXERCISE_NAME_CROSS_BODY_DUMBBELL_HAMMER_CURL                   (FIT_CAST(FIT_CURL_EXERCISE_NAME, 12))
#define FIT_CURL_EXERCISE_NAME_DEAD_HANG_BICEPS_CURL                             (FIT_CAST(FIT_CURL_EXERCISE_NAME, 13))
#define FIT_CURL_EXERCISE_NAME_DECLINE_HAMMER_CURL                               (FIT_CAST(FIT_CURL_EXERCISE_NAME, 14))
#define FIT_CURL_EXERCISE_NAME_DUMBBELL_BICEPS_CURL_WITH_STATIC_HOLD             (FIT_CAST(FIT_CURL_EXERCISE_NAME, 15))
#define FIT_CURL_EXERCISE_NAME_DUMBBELL_HAMMER_CURL                              (FIT_CAST(FIT_CURL_EXERCISE_NAME, 16))
#define FIT_CURL_EXERCISE_NAME_DUMBBELL_REVERSE_WRIST_CURL                       (FIT_CAST(FIT_CURL_EXERCISE_NAME, 17))
#define FIT_CURL_EXERCISE_NAME_DUMBBELL_WRIST_CURL                               (FIT_CAST(FIT_CURL_EXERCISE_NAME, 18))
#define FIT_CURL_EXERCISE_NAME_EZ_BAR_PREACHER_CURL                              (FIT_CAST(FIT_CURL_EXERCISE_NAME, 19))
#define FIT_CURL_EXERCISE_NAME_FORWARD_BEND_BICEPS_CURL                          (FIT_CAST(FIT_CURL_EXERCISE_NAME, 20))
#define FIT_CURL_EXERCISE_NAME_HAMMER_CURL_TO_PRESS                              (FIT_CAST(FIT_CURL_EXERCISE_NAME, 21))
#define FIT_CURL_EXERCISE_NAME_INCLINE_DUMBBELL_BICEPS_CURL                      (FIT_CAST(FIT_CURL_EXERCISE_NAME, 22))
#define FIT_CURL_EXERCISE_NAME_INCLINE_OFFSET_THUMB_DUMBBELL_CURL                (FIT_CAST(FIT_CURL_EXERCISE_NAME, 23))
#define FIT_CURL_EXERCISE_NAME_KETTLEBELL_BICEPS_CURL                            (FIT_CAST(FIT_CURL_EXERCISE_NAME, 24))
#define FIT_CURL_EXERCISE_NAME_LYING_CONCENTRATION_CABLE_CURL                    (FIT_CAST(FIT_CURL_EXERCISE_NAME, 25))
#define FIT_CURL_EXERCISE_NAME_ONE_ARM_PREACHER_CURL                             (FIT_CAST(FIT_CURL_EXERCISE_NAME, 26))
#define FIT_CURL_EXERCISE_NAME_PLATE_PINCH_CURL                                  (FIT_CAST(FIT_CURL_EXERCISE_NAME, 27))
#define FIT_CURL_EXERCISE_NAME_PREACHER_CURL_WITH_CABLE                          (FIT_CAST(FIT_CURL_EXERCISE_NAME, 28))
#define FIT_CURL_EXERCISE_NAME_REVERSE_EZ_BAR_CURL                               (FIT_CAST(FIT_CURL_EXERCISE_NAME, 29))
#define FIT_CURL_EXERCISE_NAME_REVERSE_GRIP_WRIST_CURL                           (FIT_CAST(FIT_CURL_EXERCISE_NAME, 30))
#define FIT_CURL_EXERCISE_NAME_REVERSE_GRIP_BARBELL_BICEPS_CURL                  (FIT_CAST(FIT_CURL_EXERCISE_NAME, 31))
#define FIT_CURL_EXERCISE_NAME_SEATED_ALTERNATING_DUMBBELL_BICEPS_CURL           (FIT_CAST(FIT_CURL_EXERCISE_NAME, 32))
#define FIT_CURL_EXERCISE_NAME_SEATED_DUMBBELL_BICEPS_CURL                       (FIT_CAST(FIT_CURL_EXERCISE_NAME, 33))
#define FIT_CURL_EXERCISE_NAME_SEATED_REVERSE_DUMBBELL_CURL                      (FIT_CAST(FIT_CURL_EXERCISE_NAME, 34))
#define FIT_CURL_EXERCISE_NAME_SPLIT_STANCE_OFFSET_PINKY_DUMBBELL_CURL           (FIT_CAST(FIT_CURL_EXERCISE_NAME, 35))
#define FIT_CURL_EXERCISE_NAME_STANDING_ALTERNATING_DUMBBELL_CURLS               (FIT_CAST(FIT_CURL_EXERCISE_NAME, 36))
#define FIT_CURL_EXERCISE_NAME_STANDING_DUMBBELL_BICEPS_CURL                     (FIT_CAST(FIT_CURL_EXERCISE_NAME, 37))
#define FIT_CURL_EXERCISE_NAME_STANDING_EZ_BAR_BICEPS_CURL                       (FIT_CAST(FIT_CURL_EXERCISE_NAME, 38))
#define FIT_CURL_EXERCISE_NAME_STATIC_CURL                                       (FIT_CAST(FIT_CURL_EXERCISE_NAME, 39))
#define FIT_CURL_EXERCISE_NAME_SWISS_BALL_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION    (FIT_CAST(FIT_CURL_EXERCISE_NAME, 40))
#define FIT_CURL_EXERCISE_NAME_SWISS_BALL_EZ_BAR_PREACHER_CURL                   (FIT_CAST(FIT_CURL_EXERCISE_NAME, 41))
#define FIT_CURL_EXERCISE_NAME_TWISTING_STANDING_DUMBBELL_BICEPS_CURL            (FIT_CAST(FIT_CURL_EXERCISE_NAME, 42))
#define FIT_CURL_EXERCISE_NAME_WIDE_GRIP_EZ_BAR_BICEPS_CURL                      (FIT_CAST(FIT_CURL_EXERCISE_NAME, 43))
#define FIT_CURL_EXERCISE_NAME_ONE_ARM_CONCENTRATION_CURL                        (FIT_CAST(FIT_CURL_EXERCISE_NAME, 44))
#define FIT_CURL_EXERCISE_NAME_STANDING_ZOTTMAN_BICEPS_CURL                      (FIT_CAST(FIT_CURL_EXERCISE_NAME, 45))
#define FIT_CURL_EXERCISE_NAME_DUMBBELL_BICEPS_CURL                              (FIT_CAST(FIT_CURL_EXERCISE_NAME, 46))
#define FIT_CURL_EXERCISE_NAME_DRAG_CURL_WHEELCHAIR                              (FIT_CAST(FIT_CURL_EXERCISE_NAME, 47))
#define FIT_CURL_EXERCISE_NAME_DUMBBELL_BICEPS_CURL_WHEELCHAIR                   (FIT_CAST(FIT_CURL_EXERCISE_NAME, 48))
#define FIT_CURL_EXERCISE_NAME_BOTTLE_CURL                                       (FIT_CAST(FIT_CURL_EXERCISE_NAME, 49))
#define FIT_CURL_EXERCISE_NAME_SEATED_BOTTLE_CURL                                (FIT_CAST(FIT_CURL_EXERCISE_NAME, 50))
#define FIT_CURL_EXERCISE_NAME_COUNT                                             51

typedef FIT_UINT16 FIT_DEADLIFT_EXERCISE_NAME;
#define FIT_DEADLIFT_EXERCISE_NAME_INVALID                                       FIT_UINT16_INVALID
#define FIT_DEADLIFT_EXERCISE_NAME_BARBELL_DEADLIFT                              (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 0))
#define FIT_DEADLIFT_EXERCISE_NAME_BARBELL_STRAIGHT_LEG_DEADLIFT                 (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 1))
#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_DEADLIFT                             (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 2))
#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_SINGLE_LEG_DEADLIFT_TO_ROW           (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 3))
#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_STRAIGHT_LEG_DEADLIFT                (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 4))
#define FIT_DEADLIFT_EXERCISE_NAME_KETTLEBELL_FLOOR_TO_SHELF                     (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 5))
#define FIT_DEADLIFT_EXERCISE_NAME_ONE_ARM_ONE_LEG_DEADLIFT                      (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 6))
#define FIT_DEADLIFT_EXERCISE_NAME_RACK_PULL                                     (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 7))
#define FIT_DEADLIFT_EXERCISE_NAME_ROTATIONAL_DUMBBELL_STRAIGHT_LEG_DEADLIFT     (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 8))
#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_ARM_DEADLIFT                           (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 9))
#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_BARBELL_DEADLIFT                   (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 10))
#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_BARBELL_STRAIGHT_LEG_DEADLIFT      (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 11))
#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_DEADLIFT_WITH_BARBELL              (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 12))
#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_RDL_CIRCUIT                        (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 13))
#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_ROMANIAN_DEADLIFT_WITH_DUMBBELL    (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 14))
#define FIT_DEADLIFT_EXERCISE_NAME_SUMO_DEADLIFT                                 (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 15))
#define FIT_DEADLIFT_EXERCISE_NAME_SUMO_DEADLIFT_HIGH_PULL                       (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 16))
#define FIT_DEADLIFT_EXERCISE_NAME_TRAP_BAR_DEADLIFT                             (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 17))
#define FIT_DEADLIFT_EXERCISE_NAME_WIDE_GRIP_BARBELL_DEADLIFT                    (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 18))
#define FIT_DEADLIFT_EXERCISE_NAME_KETTLEBELL_DEADLIFT                           (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 20))
#define FIT_DEADLIFT_EXERCISE_NAME_KETTLEBELL_SUMO_DEADLIFT                      (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 21))
#define FIT_DEADLIFT_EXERCISE_NAME_ROMANIAN_DEADLIFT                             (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 23))
#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_ROMANIAN_DEADLIFT_CIRCUIT          (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 24))
#define FIT_DEADLIFT_EXERCISE_NAME_STRAIGHT_LEG_DEADLIFT                         (FIT_CAST(FIT_DEADLIFT_EXERCISE_NAME, 25))
#define FIT_DEADLIFT_EXERCISE_NAME_COUNT                                         24

typedef FIT_UINT16 FIT_FLYE_EXERCISE_NAME;
#define FIT_FLYE_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_FLYE_EXERCISE_NAME_CABLE_CROSSOVER                                   (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 0))
#define FIT_FLYE_EXERCISE_NAME_DECLINE_DUMBBELL_FLYE                             (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 1))
#define FIT_FLYE_EXERCISE_NAME_DUMBBELL_FLYE                                     (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 2))
#define FIT_FLYE_EXERCISE_NAME_INCLINE_DUMBBELL_FLYE                             (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 3))
#define FIT_FLYE_EXERCISE_NAME_KETTLEBELL_FLYE                                   (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 4))
#define FIT_FLYE_EXERCISE_NAME_KNEELING_REAR_FLYE                                (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 5))
#define FIT_FLYE_EXERCISE_NAME_SINGLE_ARM_STANDING_CABLE_REVERSE_FLYE            (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 6))
#define FIT_FLYE_EXERCISE_NAME_SWISS_BALL_DUMBBELL_FLYE                          (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 7))
#define FIT_FLYE_EXERCISE_NAME_ARM_ROTATIONS                                     (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 8))
#define FIT_FLYE_EXERCISE_NAME_HUG_A_TREE                                        (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 9))
#define FIT_FLYE_EXERCISE_NAME_FACE_DOWN_INCLINE_REVERSE_FLYE                    (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 10))
#define FIT_FLYE_EXERCISE_NAME_INCLINE_REVERSE_FLYE                              (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 11))
#define FIT_FLYE_EXERCISE_NAME_REAR_DELT_FLY_WHEELCHAIR                          (FIT_CAST(FIT_FLYE_EXERCISE_NAME, 12))
#define FIT_FLYE_EXERCISE_NAME_COUNT                                             13

typedef FIT_UINT16 FIT_HIP_RAISE_EXERCISE_NAME;
#define FIT_HIP_RAISE_EXERCISE_NAME_INVALID                                      FIT_UINT16_INVALID
#define FIT_HIP_RAISE_EXERCISE_NAME_BARBELL_HIP_THRUST_ON_FLOOR                  (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 0))
#define FIT_HIP_RAISE_EXERCISE_NAME_BARBELL_HIP_THRUST_WITH_BENCH                (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 1))
#define FIT_HIP_RAISE_EXERCISE_NAME_BENT_KNEE_SWISS_BALL_REVERSE_HIP_RAISE       (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 2))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_BENT_KNEE_SWISS_BALL_REVERSE_HIP_RAISE (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 3))
#define FIT_HIP_RAISE_EXERCISE_NAME_BRIDGE_WITH_LEG_EXTENSION                    (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 4))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_BRIDGE_WITH_LEG_EXTENSION           (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 5))
#define FIT_HIP_RAISE_EXERCISE_NAME_CLAM_BRIDGE                                  (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 6))
#define FIT_HIP_RAISE_EXERCISE_NAME_FRONT_KICK_TABLETOP                          (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 7))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_FRONT_KICK_TABLETOP                 (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 8))
#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_EXTENSION_AND_CROSS                      (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 9))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_EXTENSION_AND_CROSS             (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 10))
#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE                                    (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 11))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE                           (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 12))
#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_FEET_ON_SWISS_BALL            (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 13))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_FEET_ON_SWISS_BALL   (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 14))
#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL             (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 15))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL    (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 16))
#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_HEAD_ON_SWISS_BALL            (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 17))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_HEAD_ON_SWISS_BALL   (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 18))
#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_KNEE_SQUEEZE                  (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 19))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_KNEE_SQUEEZE         (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 20))
#define FIT_HIP_RAISE_EXERCISE_NAME_INCLINE_REAR_LEG_EXTENSION                   (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 21))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_INCLINE_REAR_LEG_EXTENSION          (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 22))
#define FIT_HIP_RAISE_EXERCISE_NAME_KETTLEBELL_SWING                             (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 23))
#define FIT_HIP_RAISE_EXERCISE_NAME_MARCHING_HIP_RAISE                           (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 24))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_MARCHING_HIP_RAISE                  (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 25))
#define FIT_HIP_RAISE_EXERCISE_NAME_MARCHING_HIP_RAISE_WITH_FEET_ON_A_SWISS_BALL (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 26))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_MARCHING_HIP_RAISE_WITH_FEET_ON_A_SWISS_BALL (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 27))
#define FIT_HIP_RAISE_EXERCISE_NAME_REVERSE_HIP_RAISE                            (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 28))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_HIP_RAISE                   (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 29))
#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE                         (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 30))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE                (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 31))
#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BENCH      (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 32))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BENCH (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 33))
#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BOSU_BALL  (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 34))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BOSU_BALL (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 35))
#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_FOAM_ROLLER (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 36))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_FOAM_ROLLER (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 37))
#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_MEDICINE_BALL (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 38))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_MEDICINE_BALL (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 39))
#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL  (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 40))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 41))
#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_CLAM_BRIDGE                         (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 42))
#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_SWISS_BALL_HIP_RAISE_AND_LEG_CURL (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 43))
#define FIT_HIP_RAISE_EXERCISE_NAME_CLAMS                                        (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 44))
#define FIT_HIP_RAISE_EXERCISE_NAME_INNER_THIGH_CIRCLES                          (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 45)) // Deprecated do not use
#define FIT_HIP_RAISE_EXERCISE_NAME_INNER_THIGH_SIDE_LIFT                        (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 46)) // Deprecated do not use
#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_CIRCLES                                  (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 47))
#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_LIFT                                     (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 48))
#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_LIFT_IN_EXTERNAL_ROTATION                (FIT_CAST(FIT_HIP_RAISE_EXERCISE_NAME, 49))
#define FIT_HIP_RAISE_EXERCISE_NAME_COUNT                                        50

typedef FIT_UINT16 FIT_HIP_STABILITY_EXERCISE_NAME;
#define FIT_HIP_STABILITY_EXERCISE_NAME_INVALID                                  FIT_UINT16_INVALID
#define FIT_HIP_STABILITY_EXERCISE_NAME_BAND_SIDE_LYING_LEG_RAISE                (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 0))
#define FIT_HIP_STABILITY_EXERCISE_NAME_DEAD_BUG                                 (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 1))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_DEAD_BUG                        (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 2))
#define FIT_HIP_STABILITY_EXERCISE_NAME_EXTERNAL_HIP_RAISE                       (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 3))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_EXTERNAL_HIP_RAISE              (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 4))
#define FIT_HIP_STABILITY_EXERCISE_NAME_FIRE_HYDRANT_KICKS                       (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 5))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_FIRE_HYDRANT_KICKS              (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 6))
#define FIT_HIP_STABILITY_EXERCISE_NAME_HIP_CIRCLES                              (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 7))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_HIP_CIRCLES                     (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 8))
#define FIT_HIP_STABILITY_EXERCISE_NAME_INNER_THIGH_LIFT                         (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 9))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_INNER_THIGH_LIFT                (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 10))
#define FIT_HIP_STABILITY_EXERCISE_NAME_LATERAL_WALKS_WITH_BAND_AT_ANKLES        (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 11))
#define FIT_HIP_STABILITY_EXERCISE_NAME_PRETZEL_SIDE_KICK                        (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 12))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_PRETZEL_SIDE_KICK               (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 13))
#define FIT_HIP_STABILITY_EXERCISE_NAME_PRONE_HIP_INTERNAL_ROTATION              (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 14))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_PRONE_HIP_INTERNAL_ROTATION     (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 15))
#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED                                (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 16))
#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED_HIP_EXTENSION                  (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 17))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_QUADRUPED_HIP_EXTENSION         (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 18))
#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED_WITH_LEG_LIFT                  (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 19))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_QUADRUPED_WITH_LEG_LIFT         (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 20))
#define FIT_HIP_STABILITY_EXERCISE_NAME_SIDE_LYING_LEG_RAISE                     (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 21))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SIDE_LYING_LEG_RAISE            (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 22))
#define FIT_HIP_STABILITY_EXERCISE_NAME_SLIDING_HIP_ADDUCTION                    (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 23))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SLIDING_HIP_ADDUCTION           (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 24))
#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_ADDUCTION                       (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 25))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_ADDUCTION              (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 26))
#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_CABLE_HIP_ABDUCTION             (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 27))
#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_HIP_ABDUCTION                   (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 28))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_HIP_ABDUCTION          (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 29))
#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_REAR_LEG_RAISE                  (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 30))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_REAR_LEG_RAISE         (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 31))
#define FIT_HIP_STABILITY_EXERCISE_NAME_SUPINE_HIP_INTERNAL_ROTATION             (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 32))
#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SUPINE_HIP_INTERNAL_ROTATION    (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 33))
#define FIT_HIP_STABILITY_EXERCISE_NAME_LYING_ABDUCTION_STRETCH                  (FIT_CAST(FIT_HIP_STABILITY_EXERCISE_NAME, 34))
#define FIT_HIP_STABILITY_EXERCISE_NAME_COUNT                                    35

typedef FIT_UINT16 FIT_HIP_SWING_EXERCISE_NAME;
#define FIT_HIP_SWING_EXERCISE_NAME_INVALID                                      FIT_UINT16_INVALID
#define FIT_HIP_SWING_EXERCISE_NAME_SINGLE_ARM_KETTLEBELL_SWING                  (FIT_CAST(FIT_HIP_SWING_EXERCISE_NAME, 0))
#define FIT_HIP_SWING_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SWING                    (FIT_CAST(FIT_HIP_SWING_EXERCISE_NAME, 1))
#define FIT_HIP_SWING_EXERCISE_NAME_STEP_OUT_SWING                               (FIT_CAST(FIT_HIP_SWING_EXERCISE_NAME, 2))
#define FIT_HIP_SWING_EXERCISE_NAME_ONE_ARM_SWING                                (FIT_CAST(FIT_HIP_SWING_EXERCISE_NAME, 3))
#define FIT_HIP_SWING_EXERCISE_NAME_COUNT                                        4

typedef FIT_UINT16 FIT_HYPEREXTENSION_EXERCISE_NAME;
#define FIT_HYPEREXTENSION_EXERCISE_NAME_INVALID                                 FIT_UINT16_INVALID
#define FIT_HYPEREXTENSION_EXERCISE_NAME_BACK_EXTENSION_WITH_OPPOSITE_ARM_AND_LEG_REACH (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 0))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BACK_EXTENSION_WITH_OPPOSITE_ARM_AND_LEG_REACH (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 1))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_BASE_ROTATIONS                          (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 2))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BASE_ROTATIONS                 (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 3))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_BENT_KNEE_REVERSE_HYPEREXTENSION        (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 4))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BENT_KNEE_REVERSE_HYPEREXTENSION (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 5))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_HOLLOW_HOLD_AND_ROLL                    (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 6))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_HOLLOW_HOLD_AND_ROLL           (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 7))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_KICKS                                   (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 8))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KICKS                          (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 9))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_KNEE_RAISES                             (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 10))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KNEE_RAISES                    (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 11))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_KNEELING_SUPERMAN                       (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 12))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KNEELING_SUPERMAN              (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 13))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_LAT_PULL_DOWN_WITH_ROW                  (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 14))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_MEDICINE_BALL_DEADLIFT_TO_REACH         (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 15))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_ONE_ARM_ONE_LEG_ROW                     (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 16))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_ONE_ARM_ROW_WITH_BAND                   (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 17))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_OVERHEAD_LUNGE_WITH_MEDICINE_BALL       (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 18))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_PLANK_KNEE_TUCKS                        (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 19))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_PLANK_KNEE_TUCKS               (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 20))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SIDE_STEP                               (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 21))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SIDE_STEP                      (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 22))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SINGLE_LEG_BACK_EXTENSION               (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 23))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BACK_EXTENSION      (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 24))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SPINE_EXTENSION                         (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 25))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SPINE_EXTENSION                (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 26))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_STATIC_BACK_EXTENSION                   (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 27))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_STATIC_BACK_EXTENSION          (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 28))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SUPERMAN_FROM_FLOOR                     (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 29))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SUPERMAN_FROM_FLOOR            (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 30))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_BACK_EXTENSION               (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 31))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_BACK_EXTENSION      (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 32))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_HYPEREXTENSION               (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 33))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_HYPEREXTENSION      (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 34))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_OPPOSITE_ARM_AND_LEG_LIFT    (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 35))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_OPPOSITE_ARM_AND_LEG_LIFT (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 36))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SUPERMAN_ON_SWISS_BALL                  (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 37))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_COBRA                                   (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 38))
#define FIT_HYPEREXTENSION_EXERCISE_NAME_SUPINE_FLOOR_BARRE                      (FIT_CAST(FIT_HYPEREXTENSION_EXERCISE_NAME, 39)) // Deprecated do not use
#define FIT_HYPEREXTENSION_EXERCISE_NAME_COUNT                                   40

typedef FIT_UINT16 FIT_LATERAL_RAISE_EXERCISE_NAME;
#define FIT_LATERAL_RAISE_EXERCISE_NAME_INVALID                                  FIT_UINT16_INVALID
#define FIT_LATERAL_RAISE_EXERCISE_NAME_45_DEGREE_CABLE_EXTERNAL_ROTATION        (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 0))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_ALTERNATING_LATERAL_RAISE_WITH_STATIC_HOLD (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 1))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_BAR_MUSCLE_UP                            (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 2))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_BENT_OVER_LATERAL_RAISE                  (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 3))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_CABLE_DIAGONAL_RAISE                     (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 4))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_CABLE_FRONT_RAISE                        (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 5))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_CALORIE_ROW                              (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 6))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_COMBO_SHOULDER_RAISE                     (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 7))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_DIAGONAL_RAISE                  (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 8))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_V_RAISE                         (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 9))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_FRONT_RAISE                              (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 10))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_LEANING_DUMBBELL_LATERAL_RAISE           (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 11))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_LYING_DUMBBELL_RAISE                     (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 12))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_MUSCLE_UP                                (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 13))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_ONE_ARM_CABLE_LATERAL_RAISE              (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 14))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_OVERHAND_GRIP_REAR_LATERAL_RAISE         (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 15))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_PLATE_RAISES                             (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 16))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_RING_DIP                                 (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 17))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_RING_DIP                        (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 18))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_RING_MUSCLE_UP                           (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 19))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_RING_MUSCLE_UP                  (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 20))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_ROPE_CLIMB                               (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 21))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_ROPE_CLIMB                      (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 22))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_SCAPTION                                 (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 23))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_SEATED_LATERAL_RAISE                     (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 24))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_SEATED_REAR_LATERAL_RAISE                (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 25))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_SIDE_LYING_LATERAL_RAISE                 (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 26))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_STANDING_LIFT                            (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 27))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_SUSPENDED_ROW                            (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 28))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_UNDERHAND_GRIP_REAR_LATERAL_RAISE        (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 29))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_WALL_SLIDE                               (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 30))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_WALL_SLIDE                      (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 31))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_ARM_CIRCLES                              (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 32))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_SHAVING_THE_HEAD                         (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 33))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_LATERAL_RAISE                   (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 34))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_RING_DIP_KIPPING                         (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 36))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_WALL_WALK                                (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 37))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_FRONT_RAISE_WHEELCHAIR          (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 38))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_LATERAL_RAISE_WHEELCHAIR        (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 39))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_POLE_DOUBLE_ARM_OVERHEAD_AND_FORWARD_WHEELCHAIR (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 40))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_POLE_STRAIGHT_ARM_OVERHEAD_WHEELCHAIR    (FIT_CAST(FIT_LATERAL_RAISE_EXERCISE_NAME, 41))
#define FIT_LATERAL_RAISE_EXERCISE_NAME_COUNT                                    41

typedef FIT_UINT16 FIT_LEG_CURL_EXERCISE_NAME;
#define FIT_LEG_CURL_EXERCISE_NAME_INVALID                                       FIT_UINT16_INVALID
#define FIT_LEG_CURL_EXERCISE_NAME_LEG_CURL                                      (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 0))
#define FIT_LEG_CURL_EXERCISE_NAME_WEIGHTED_LEG_CURL                             (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 1))
#define FIT_LEG_CURL_EXERCISE_NAME_GOOD_MORNING                                  (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 2))
#define FIT_LEG_CURL_EXERCISE_NAME_SEATED_BARBELL_GOOD_MORNING                   (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 3))
#define FIT_LEG_CURL_EXERCISE_NAME_SINGLE_LEG_BARBELL_GOOD_MORNING               (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 4))
#define FIT_LEG_CURL_EXERCISE_NAME_SINGLE_LEG_SLIDING_LEG_CURL                   (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 5))
#define FIT_LEG_CURL_EXERCISE_NAME_SLIDING_LEG_CURL                              (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 6))
#define FIT_LEG_CURL_EXERCISE_NAME_SPLIT_BARBELL_GOOD_MORNING                    (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 7))
#define FIT_LEG_CURL_EXERCISE_NAME_SPLIT_STANCE_EXTENSION                        (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 8))
#define FIT_LEG_CURL_EXERCISE_NAME_STAGGERED_STANCE_GOOD_MORNING                 (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 9))
#define FIT_LEG_CURL_EXERCISE_NAME_SWISS_BALL_HIP_RAISE_AND_LEG_CURL             (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 10))
#define FIT_LEG_CURL_EXERCISE_NAME_ZERCHER_GOOD_MORNING                          (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 11))
#define FIT_LEG_CURL_EXERCISE_NAME_BAND_GOOD_MORNING                             (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 12))
#define FIT_LEG_CURL_EXERCISE_NAME_BAR_GOOD_MORNING                              (FIT_CAST(FIT_LEG_CURL_EXERCISE_NAME, 13))
#define FIT_LEG_CURL_EXERCISE_NAME_COUNT                                         14

typedef FIT_UINT16 FIT_LEG_RAISE_EXERCISE_NAME;
#define FIT_LEG_RAISE_EXERCISE_NAME_INVALID                                      FIT_UINT16_INVALID
#define FIT_LEG_RAISE_EXERCISE_NAME_HANGING_KNEE_RAISE                           (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 0))
#define FIT_LEG_RAISE_EXERCISE_NAME_HANGING_LEG_RAISE                            (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 1))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_LEG_RAISE                   (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 2))
#define FIT_LEG_RAISE_EXERCISE_NAME_HANGING_SINGLE_LEG_RAISE                     (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 3))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_SINGLE_LEG_RAISE            (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 4))
#define FIT_LEG_RAISE_EXERCISE_NAME_KETTLEBELL_LEG_RAISES                        (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 5))
#define FIT_LEG_RAISE_EXERCISE_NAME_LEG_LOWERING_DRILL                           (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 6))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LEG_LOWERING_DRILL                  (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 7))
#define FIT_LEG_RAISE_EXERCISE_NAME_LYING_STRAIGHT_LEG_RAISE                     (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 8))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LYING_STRAIGHT_LEG_RAISE            (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 9))
#define FIT_LEG_RAISE_EXERCISE_NAME_MEDICINE_BALL_LEG_DROPS                      (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 10))
#define FIT_LEG_RAISE_EXERCISE_NAME_QUADRUPED_LEG_RAISE                          (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 11))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_QUADRUPED_LEG_RAISE                 (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 12))
#define FIT_LEG_RAISE_EXERCISE_NAME_REVERSE_LEG_RAISE                            (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 13))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_LEG_RAISE                   (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 14))
#define FIT_LEG_RAISE_EXERCISE_NAME_REVERSE_LEG_RAISE_ON_SWISS_BALL              (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 15))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_LEG_RAISE_ON_SWISS_BALL     (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 16))
#define FIT_LEG_RAISE_EXERCISE_NAME_SINGLE_LEG_LOWERING_DRILL                    (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 17))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_LOWERING_DRILL           (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 18))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_KNEE_RAISE                  (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 19))
#define FIT_LEG_RAISE_EXERCISE_NAME_LATERAL_STEPOVER                             (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 20))
#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LATERAL_STEPOVER                    (FIT_CAST(FIT_LEG_RAISE_EXERCISE_NAME, 21))
#define FIT_LEG_RAISE_EXERCISE_NAME_COUNT                                        22

typedef FIT_UINT16 FIT_LUNGE_EXERCISE_NAME;
#define FIT_LUNGE_EXERCISE_NAME_INVALID                                          FIT_UINT16_INVALID
#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_LUNGE                                   (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 0))
#define FIT_LUNGE_EXERCISE_NAME_LUNGE_MATRIX                                     (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 1))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_LUNGE_MATRIX                            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 2))
#define FIT_LUNGE_EXERCISE_NAME_ALTERNATING_BARBELL_FORWARD_LUNGE                (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 3))
#define FIT_LUNGE_EXERCISE_NAME_ALTERNATING_DUMBBELL_LUNGE_WITH_REACH            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 4))
#define FIT_LUNGE_EXERCISE_NAME_BACK_FOOT_ELEVATED_DUMBBELL_SPLIT_SQUAT          (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 5))
#define FIT_LUNGE_EXERCISE_NAME_BARBELL_BOX_LUNGE                                (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 6))
#define FIT_LUNGE_EXERCISE_NAME_BARBELL_BULGARIAN_SPLIT_SQUAT                    (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 7))
#define FIT_LUNGE_EXERCISE_NAME_BARBELL_CROSSOVER_LUNGE                          (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 8))
#define FIT_LUNGE_EXERCISE_NAME_BARBELL_FRONT_SPLIT_SQUAT                        (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 9))
#define FIT_LUNGE_EXERCISE_NAME_BARBELL_LUNGE                                    (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 10))
#define FIT_LUNGE_EXERCISE_NAME_BARBELL_REVERSE_LUNGE                            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 11))
#define FIT_LUNGE_EXERCISE_NAME_BARBELL_SIDE_LUNGE                               (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 12))
#define FIT_LUNGE_EXERCISE_NAME_BARBELL_SPLIT_SQUAT                              (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 13))
#define FIT_LUNGE_EXERCISE_NAME_CORE_CONTROL_REAR_LUNGE                          (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 14))
#define FIT_LUNGE_EXERCISE_NAME_DIAGONAL_LUNGE                                   (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 15))
#define FIT_LUNGE_EXERCISE_NAME_DROP_LUNGE                                       (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 16))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_BOX_LUNGE                               (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 17))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_BULGARIAN_SPLIT_SQUAT                   (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 18))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_CROSSOVER_LUNGE                         (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 19))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_DIAGONAL_LUNGE                          (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 20))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_LUNGE                                   (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 21))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_LUNGE_AND_ROTATION                      (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 22))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_OVERHEAD_BULGARIAN_SPLIT_SQUAT          (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 23))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_REVERSE_LUNGE_TO_HIGH_KNEE_AND_PRESS    (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 24))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_SIDE_LUNGE                              (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 25))
#define FIT_LUNGE_EXERCISE_NAME_ELEVATED_FRONT_FOOT_BARBELL_SPLIT_SQUAT          (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 26))
#define FIT_LUNGE_EXERCISE_NAME_FRONT_FOOT_ELEVATED_DUMBBELL_SPLIT_SQUAT         (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 27))
#define FIT_LUNGE_EXERCISE_NAME_GUNSLINGER_LUNGE                                 (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 28))
#define FIT_LUNGE_EXERCISE_NAME_LAWNMOWER_LUNGE                                  (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 29))
#define FIT_LUNGE_EXERCISE_NAME_LOW_LUNGE_WITH_ISOMETRIC_ADDUCTION               (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 30))
#define FIT_LUNGE_EXERCISE_NAME_LOW_SIDE_TO_SIDE_LUNGE                           (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 31))
#define FIT_LUNGE_EXERCISE_NAME_LUNGE                                            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 32))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_LUNGE                                   (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 33))
#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_ARM_REACH                             (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 34))
#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_DIAGONAL_REACH                        (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 35))
#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_SIDE_BEND                             (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 36))
#define FIT_LUNGE_EXERCISE_NAME_OFFSET_DUMBBELL_LUNGE                            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 37))
#define FIT_LUNGE_EXERCISE_NAME_OFFSET_DUMBBELL_REVERSE_LUNGE                    (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 38))
#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_BULGARIAN_SPLIT_SQUAT                   (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 39))
#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_DUMBBELL_REVERSE_LUNGE                  (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 40))
#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_DUMBBELL_SPLIT_SQUAT                    (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 41))
#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_LUNGE_WITH_ROTATION                     (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 42))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_BARBELL_BOX_LUNGE                        (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 43))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_BOX_LUNGE                                (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 44))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_BOX_LUNGE                       (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 45))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_CROSSOVER_LUNGE                 (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 46))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_DIAGONAL_LUNGE                  (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 47))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_LUNGE_WITH_REACH_BACK                    (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 48))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_LUNGE_WITH_REACH_BACK           (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 49))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_LUNGE_WITH_TWIST_AND_OVERHEAD_REACH      (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 50))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_LUNGE_WITH_TWIST_AND_OVERHEAD_REACH (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 51))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_SLIDING_BOX_LUNGE                        (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 52))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_SLIDING_BOX_LUNGE               (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 53))
#define FIT_LUNGE_EXERCISE_NAME_REVERSE_SLIDING_LUNGE                            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 54))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_SLIDING_LUNGE                   (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 55))
#define FIT_LUNGE_EXERCISE_NAME_RUNNERS_LUNGE_TO_BALANCE                         (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 56))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_RUNNERS_LUNGE_TO_BALANCE                (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 57))
#define FIT_LUNGE_EXERCISE_NAME_SHIFTING_SIDE_LUNGE                              (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 58))
#define FIT_LUNGE_EXERCISE_NAME_SIDE_AND_CROSSOVER_LUNGE                         (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 59))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_AND_CROSSOVER_LUNGE                (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 60))
#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE                                       (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 61))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE                              (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 62))
#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_AND_PRESS                             (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 63))
#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_JUMP_OFF                              (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 64))
#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_SWEEP                                 (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 65))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE_SWEEP                        (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 66))
#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_TO_CROSSOVER_TAP                      (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 67))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE_TO_CROSSOVER_TAP             (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 68))
#define FIT_LUNGE_EXERCISE_NAME_SIDE_TO_SIDE_LUNGE_CHOPS                         (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 69))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_LUNGE_CHOPS                (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 70))
#define FIT_LUNGE_EXERCISE_NAME_SIFF_JUMP_LUNGE                                  (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 71))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIFF_JUMP_LUNGE                         (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 72))
#define FIT_LUNGE_EXERCISE_NAME_SINGLE_ARM_REVERSE_LUNGE_AND_PRESS               (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 73))
#define FIT_LUNGE_EXERCISE_NAME_SLIDING_LATERAL_LUNGE                            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 74))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SLIDING_LATERAL_LUNGE                   (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 75))
#define FIT_LUNGE_EXERCISE_NAME_WALKING_BARBELL_LUNGE                            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 76))
#define FIT_LUNGE_EXERCISE_NAME_WALKING_DUMBBELL_LUNGE                           (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 77))
#define FIT_LUNGE_EXERCISE_NAME_WALKING_LUNGE                                    (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 78))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_WALKING_LUNGE                           (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 79))
#define FIT_LUNGE_EXERCISE_NAME_WIDE_GRIP_OVERHEAD_BARBELL_SPLIT_SQUAT           (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 80))
#define FIT_LUNGE_EXERCISE_NAME_ALTERNATING_DUMBBELL_LUNGE                       (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 81))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_REVERSE_LUNGE                           (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 82))
#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_DUMBBELL_LUNGE                          (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 83))
#define FIT_LUNGE_EXERCISE_NAME_SCISSOR_POWER_SWITCH                             (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 84))
#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_OVERHEAD_WALKING_LUNGE                  (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 85))
#define FIT_LUNGE_EXERCISE_NAME_CURTSY_LUNGE                                     (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 86))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_CURTSY_LUNGE                            (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 87))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SHIFTING_SIDE_LUNGE                     (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 88))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE_AND_PRESS                    (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 89))
#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE_JUMP_OFF                     (FIT_CAST(FIT_LUNGE_EXERCISE_NAME, 90))
#define FIT_LUNGE_EXERCISE_NAME_COUNT                                            91

typedef FIT_UINT16 FIT_OLYMPIC_LIFT_EXERCISE_NAME;
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_INVALID                                   FIT_UINT16_INVALID
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_POWER_CLEAN                  (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 0))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_SQUAT_CLEAN                  (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 1))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_POWER_CLEAN                       (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 2))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_POWER_SNATCH                      (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 3))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SQUAT_CLEAN                       (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 4))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_CLEAN_AND_JERK                            (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 5))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_POWER_SNATCH                 (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 6))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_PULL                         (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 7))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HIGH_PULL                         (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 8))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SNATCH                            (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 9))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SPLIT_JERK                        (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 10))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_CLEAN                                     (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 11))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_CLEAN                            (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 12))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_HANG_PULL                        (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 13))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_ONE_HAND_DUMBBELL_SPLIT_SNATCH            (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 14))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_PUSH_JERK                                 (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 15))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SNATCH                (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 16))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_HANG_SNATCH                    (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 17))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_KETTLEBELL_SNATCH              (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 18))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SPLIT_JERK                                (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 19))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SQUAT_CLEAN_AND_JERK                      (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 20))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_HANG_SNATCH                      (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 21))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_POWER_CLEAN_AND_JERK             (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 22))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_POWER_CLEAN_AND_PUSH_PRESS       (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 23))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_POWER_CLEAN_AND_STRICT_PRESS     (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 24))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_SNATCH                           (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 25))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_MEDICINE_BALL_CLEAN                       (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 26))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_CLEAN_AND_PRESS                           (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 27))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SNATCH                                    (FIT_CAST(FIT_OLYMPIC_LIFT_EXERCISE_NAME, 28))
#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_COUNT                                     29

typedef FIT_UINT16 FIT_PLANK_EXERCISE_NAME;
#define FIT_PLANK_EXERCISE_NAME_INVALID                                          FIT_UINT16_INVALID
#define FIT_PLANK_EXERCISE_NAME_45_DEGREE_PLANK                                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 0))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_45_DEGREE_PLANK                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 1))
#define FIT_PLANK_EXERCISE_NAME_90_DEGREE_STATIC_HOLD                            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 2))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_90_DEGREE_STATIC_HOLD                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 3))
#define FIT_PLANK_EXERCISE_NAME_BEAR_CRAWL                                       (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 4))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_BEAR_CRAWL                              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 5))
#define FIT_PLANK_EXERCISE_NAME_CROSS_BODY_MOUNTAIN_CLIMBER                      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 6))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_CROSS_BODY_MOUNTAIN_CLIMBER             (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 7))
#define FIT_PLANK_EXERCISE_NAME_ELBOW_PLANK_PIKE_JACKS                           (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 8))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELBOW_PLANK_PIKE_JACKS                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 9))
#define FIT_PLANK_EXERCISE_NAME_ELEVATED_FEET_PLANK                              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 10))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_PLANK                     (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 11))
#define FIT_PLANK_EXERCISE_NAME_ELEVATOR_ABS                                     (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 12))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELEVATOR_ABS                            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 13))
#define FIT_PLANK_EXERCISE_NAME_EXTENDED_PLANK                                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 14))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_EXTENDED_PLANK                          (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 15))
#define FIT_PLANK_EXERCISE_NAME_FULL_PLANK_PASSE_TWIST                           (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 16))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_FULL_PLANK_PASSE_TWIST                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 17))
#define FIT_PLANK_EXERCISE_NAME_INCHING_ELBOW_PLANK                              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 18))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_INCHING_ELBOW_PLANK                     (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 19))
#define FIT_PLANK_EXERCISE_NAME_INCHWORM_TO_SIDE_PLANK                           (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 20))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_INCHWORM_TO_SIDE_PLANK                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 21))
#define FIT_PLANK_EXERCISE_NAME_KNEELING_PLANK                                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 22))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_KNEELING_PLANK                          (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 23))
#define FIT_PLANK_EXERCISE_NAME_KNEELING_SIDE_PLANK_WITH_LEG_LIFT                (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 24))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_KNEELING_SIDE_PLANK_WITH_LEG_LIFT       (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 25))
#define FIT_PLANK_EXERCISE_NAME_LATERAL_ROLL                                     (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 26))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_LATERAL_ROLL                            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 27))
#define FIT_PLANK_EXERCISE_NAME_LYING_REVERSE_PLANK                              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 28))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_LYING_REVERSE_PLANK                     (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 29))
#define FIT_PLANK_EXERCISE_NAME_MEDICINE_BALL_MOUNTAIN_CLIMBER                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 30))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MEDICINE_BALL_MOUNTAIN_CLIMBER          (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 31))
#define FIT_PLANK_EXERCISE_NAME_MODIFIED_MOUNTAIN_CLIMBER_AND_EXTENSION          (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 32))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MODIFIED_MOUNTAIN_CLIMBER_AND_EXTENSION (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 33))
#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER                                 (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 34))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER                        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 35))
#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_ON_SLIDING_DISCS                (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 36))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_ON_SLIDING_DISCS       (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 37))
#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_FEET_ON_BOSU_BALL          (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 38))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_FEET_ON_BOSU_BALL (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 39))
#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_HANDS_ON_BENCH             (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 40))
#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_HANDS_ON_SWISS_BALL        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 41))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_HANDS_ON_SWISS_BALL (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 42))
#define FIT_PLANK_EXERCISE_NAME_PLANK                                            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 43))
#define FIT_PLANK_EXERCISE_NAME_PLANK_JACKS_WITH_FEET_ON_SLIDING_DISCS           (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 44))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_JACKS_WITH_FEET_ON_SLIDING_DISCS  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 45))
#define FIT_PLANK_EXERCISE_NAME_PLANK_KNEE_TWIST                                 (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 46))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_KNEE_TWIST                        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 47))
#define FIT_PLANK_EXERCISE_NAME_PLANK_PIKE_JUMPS                                 (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 48))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_PIKE_JUMPS                        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 49))
#define FIT_PLANK_EXERCISE_NAME_PLANK_PIKES                                      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 50))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_PIKES                             (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 51))
#define FIT_PLANK_EXERCISE_NAME_PLANK_TO_STAND_UP                                (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 52))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_TO_STAND_UP                       (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 53))
#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_ARM_RAISE                             (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 54))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_ARM_RAISE                    (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 55))
#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_KNEE_TO_ELBOW                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 56))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_KNEE_TO_ELBOW                (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 57))
#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_OBLIQUE_CRUNCH                        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 58))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_OBLIQUE_CRUNCH               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 59))
#define FIT_PLANK_EXERCISE_NAME_PLYOMETRIC_SIDE_PLANK                            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 60))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLYOMETRIC_SIDE_PLANK                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 61))
#define FIT_PLANK_EXERCISE_NAME_ROLLING_SIDE_PLANK                               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 62))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ROLLING_SIDE_PLANK                      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 63))
#define FIT_PLANK_EXERCISE_NAME_SIDE_KICK_PLANK                                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 64))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_KICK_PLANK                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 65))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK                                       (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 66))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK                              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 67))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_AND_ROW                               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 68))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_AND_ROW                      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 69))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_LIFT                                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 70))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_LIFT                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 71))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_ELBOW_ON_BOSU_BALL               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 72))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_ELBOW_ON_BOSU_BALL      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 73))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_FEET_ON_BENCH                    (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 74))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_FEET_ON_BENCH           (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 75))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_KNEE_CIRCLE                      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 76))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_KNEE_CIRCLE             (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 77))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_KNEE_TUCK                        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 78))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_KNEE_TUCK               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 79))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_LEG_LIFT                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 80))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_LEG_LIFT                (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 81))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_REACH_UNDER                      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 82))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_REACH_UNDER             (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 83))
#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_ELEVATED_FEET_PLANK                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 84))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_ELEVATED_FEET_PLANK          (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 85))
#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_FLEX_AND_EXTEND                       (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 86))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_FLEX_AND_EXTEND              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 87))
#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_SIDE_PLANK                            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 88))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SIDE_PLANK                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 89))
#define FIT_PLANK_EXERCISE_NAME_SPIDERMAN_PLANK                                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 90))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SPIDERMAN_PLANK                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 91))
#define FIT_PLANK_EXERCISE_NAME_STRAIGHT_ARM_PLANK                               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 92))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_STRAIGHT_ARM_PLANK                      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 93))
#define FIT_PLANK_EXERCISE_NAME_STRAIGHT_ARM_PLANK_WITH_SHOULDER_TOUCH           (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 94))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_STRAIGHT_ARM_PLANK_WITH_SHOULDER_TOUCH  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 95))
#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK                                 (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 96))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK                        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 97))
#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_LEG_LIFT                        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 98))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_LEG_LIFT               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 99))
#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_LEG_LIFT_AND_HOLD               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 100))
#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_WITH_FEET_ON_BENCH              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 101))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_WITH_FEET_ON_BENCH     (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 102))
#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PRONE_JACKKNIFE                       (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 103))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PRONE_JACKKNIFE              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 104))
#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_SIDE_PLANK                            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 105))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_SIDE_PLANK                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 106))
#define FIT_PLANK_EXERCISE_NAME_THREE_WAY_PLANK                                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 107))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_THREE_WAY_PLANK                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 108))
#define FIT_PLANK_EXERCISE_NAME_TOWEL_PLANK_AND_KNEE_IN                          (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 109))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TOWEL_PLANK_AND_KNEE_IN                 (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 110))
#define FIT_PLANK_EXERCISE_NAME_T_STABILIZATION                                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 111))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_T_STABILIZATION                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 112))
#define FIT_PLANK_EXERCISE_NAME_TURKISH_GET_UP_TO_SIDE_PLANK                     (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 113))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TURKISH_GET_UP_TO_SIDE_PLANK            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 114))
#define FIT_PLANK_EXERCISE_NAME_TWO_POINT_PLANK                                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 115))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TWO_POINT_PLANK                         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 116))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK                                   (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 117))
#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_DIAGONAL_ARM_LIFT         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 118))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_DIAGONAL_ARM_LIFT (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 119))
#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_DIAGONAL_LEG_LIFT         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 120))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_DIAGONAL_LEG_LIFT (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 121))
#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_LEG_LIFT                  (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 122))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_LEG_LIFT         (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 123))
#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_OPPOSITE_ARM_AND_LEG_LIFT (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 124))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_HANDS_ON_BENCH    (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 125))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_LEG_LIFT_AND_HOLD      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 126))
#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_OPPOSITE_ARM_AND_LEG_LIFT (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 127))
#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_FEET_ON_SWISS_BALL                    (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 128))
#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_TO_PLANK_WITH_REACH_UNDER             (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 129))
#define FIT_PLANK_EXERCISE_NAME_BRIDGE_WITH_GLUTE_LOWER_LIFT                     (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 130))
#define FIT_PLANK_EXERCISE_NAME_BRIDGE_ONE_LEG_BRIDGE                            (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 131))
#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_ARM_VARIATIONS                        (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 132))
#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_LEG_LIFT                              (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 133))
#define FIT_PLANK_EXERCISE_NAME_REVERSE_PLANK_WITH_LEG_PULL                      (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 134))
#define FIT_PLANK_EXERCISE_NAME_RING_PLANK_SPRAWLS                               (FIT_CAST(FIT_PLANK_EXERCISE_NAME, 135))
#define FIT_PLANK_EXERCISE_NAME_COUNT                                            136

typedef FIT_UINT16 FIT_PLYO_EXERCISE_NAME;
#define FIT_PLYO_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_PLYO_EXERCISE_NAME_ALTERNATING_JUMP_LUNGE                            (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 0))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_ALTERNATING_JUMP_LUNGE                   (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 1))
#define FIT_PLYO_EXERCISE_NAME_BARBELL_JUMP_SQUAT                                (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 2))
#define FIT_PLYO_EXERCISE_NAME_BODY_WEIGHT_JUMP_SQUAT                            (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 3))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_JUMP_SQUAT                               (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 4))
#define FIT_PLYO_EXERCISE_NAME_CROSS_KNEE_STRIKE                                 (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 5))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_CROSS_KNEE_STRIKE                        (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 6))
#define FIT_PLYO_EXERCISE_NAME_DEPTH_JUMP                                        (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 7))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_DEPTH_JUMP                               (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 8))
#define FIT_PLYO_EXERCISE_NAME_DUMBBELL_JUMP_SQUAT                               (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 9))
#define FIT_PLYO_EXERCISE_NAME_DUMBBELL_SPLIT_JUMP                               (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 10))
#define FIT_PLYO_EXERCISE_NAME_FRONT_KNEE_STRIKE                                 (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 11))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_FRONT_KNEE_STRIKE                        (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 12))
#define FIT_PLYO_EXERCISE_NAME_HIGH_BOX_JUMP                                     (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 13))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_HIGH_BOX_JUMP                            (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 14))
#define FIT_PLYO_EXERCISE_NAME_ISOMETRIC_EXPLOSIVE_BODY_WEIGHT_JUMP_SQUAT        (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 15))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_ISOMETRIC_EXPLOSIVE_JUMP_SQUAT           (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 16))
#define FIT_PLYO_EXERCISE_NAME_LATERAL_LEAP_AND_HOP                              (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 17))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_LEAP_AND_HOP                     (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 18))
#define FIT_PLYO_EXERCISE_NAME_LATERAL_PLYO_SQUATS                               (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 19))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_PLYO_SQUATS                      (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 20))
#define FIT_PLYO_EXERCISE_NAME_LATERAL_SLIDE                                     (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 21))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_SLIDE                            (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 22))
#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_OVERHEAD_THROWS                     (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 23))
#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_SIDE_THROW                          (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 24))
#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_SLAM                                (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 25))
#define FIT_PLYO_EXERCISE_NAME_SIDE_TO_SIDE_MEDICINE_BALL_THROWS                 (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 26))
#define FIT_PLYO_EXERCISE_NAME_SIDE_TO_SIDE_SHUFFLE_JUMP                         (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 27))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_SHUFFLE_JUMP                (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 28))
#define FIT_PLYO_EXERCISE_NAME_SQUAT_JUMP_ONTO_BOX                               (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 29))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SQUAT_JUMP_ONTO_BOX                      (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 30))
#define FIT_PLYO_EXERCISE_NAME_SQUAT_JUMPS_IN_AND_OUT                            (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 31))
#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SQUAT_JUMPS_IN_AND_OUT                   (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 32))
#define FIT_PLYO_EXERCISE_NAME_BOX_JUMP                                          (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 33))
#define FIT_PLYO_EXERCISE_NAME_BOX_JUMP_OVERS                                    (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 34))
#define FIT_PLYO_EXERCISE_NAME_BOX_JUMP_OVERS_OVER_THE_BOX                       (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 35))
#define FIT_PLYO_EXERCISE_NAME_STAR_JUMP_SQUATS                                  (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 36))
#define FIT_PLYO_EXERCISE_NAME_JUMP_SQUAT                                        (FIT_CAST(FIT_PLYO_EXERCISE_NAME, 37))
#define FIT_PLYO_EXERCISE_NAME_COUNT                                             38

typedef FIT_UINT16 FIT_PULL_UP_EXERCISE_NAME;
#define FIT_PULL_UP_EXERCISE_NAME_INVALID                                        FIT_UINT16_INVALID
#define FIT_PULL_UP_EXERCISE_NAME_BANDED_PULL_UPS                                (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 0))
#define FIT_PULL_UP_EXERCISE_NAME_30_DEGREE_LAT_PULLDOWN                         (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 1))
#define FIT_PULL_UP_EXERCISE_NAME_BAND_ASSISTED_CHIN_UP                          (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 2))
#define FIT_PULL_UP_EXERCISE_NAME_CLOSE_GRIP_CHIN_UP                             (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 3))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_CLOSE_GRIP_CHIN_UP                    (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 4))
#define FIT_PULL_UP_EXERCISE_NAME_CLOSE_GRIP_LAT_PULLDOWN                        (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 5))
#define FIT_PULL_UP_EXERCISE_NAME_CROSSOVER_CHIN_UP                              (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 6))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_CROSSOVER_CHIN_UP                     (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 7))
#define FIT_PULL_UP_EXERCISE_NAME_EZ_BAR_PULLOVER                                (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 8))
#define FIT_PULL_UP_EXERCISE_NAME_HANGING_HURDLE                                 (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 9))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_HANGING_HURDLE                        (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 10))
#define FIT_PULL_UP_EXERCISE_NAME_KNEELING_LAT_PULLDOWN                          (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 11))
#define FIT_PULL_UP_EXERCISE_NAME_KNEELING_UNDERHAND_GRIP_LAT_PULLDOWN           (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 12))
#define FIT_PULL_UP_EXERCISE_NAME_LAT_PULLDOWN                                   (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 13))
#define FIT_PULL_UP_EXERCISE_NAME_MIXED_GRIP_CHIN_UP                             (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 14))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_MIXED_GRIP_CHIN_UP                    (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 15))
#define FIT_PULL_UP_EXERCISE_NAME_MIXED_GRIP_PULL_UP                             (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 16))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_MIXED_GRIP_PULL_UP                    (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 17))
#define FIT_PULL_UP_EXERCISE_NAME_REVERSE_GRIP_PULLDOWN                          (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 18))
#define FIT_PULL_UP_EXERCISE_NAME_STANDING_CABLE_PULLOVER                        (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 19))
#define FIT_PULL_UP_EXERCISE_NAME_STRAIGHT_ARM_PULLDOWN                          (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 20))
#define FIT_PULL_UP_EXERCISE_NAME_SWISS_BALL_EZ_BAR_PULLOVER                     (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 21))
#define FIT_PULL_UP_EXERCISE_NAME_TOWEL_PULL_UP                                  (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 22))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_TOWEL_PULL_UP                         (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 23))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_PULL_UP                               (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 24))
#define FIT_PULL_UP_EXERCISE_NAME_WIDE_GRIP_LAT_PULLDOWN                         (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 25))
#define FIT_PULL_UP_EXERCISE_NAME_WIDE_GRIP_PULL_UP                              (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 26))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_WIDE_GRIP_PULL_UP                     (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 27))
#define FIT_PULL_UP_EXERCISE_NAME_BURPEE_PULL_UP                                 (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 28))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_BURPEE_PULL_UP                        (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 29))
#define FIT_PULL_UP_EXERCISE_NAME_JUMPING_PULL_UPS                               (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 30))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_JUMPING_PULL_UPS                      (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 31))
#define FIT_PULL_UP_EXERCISE_NAME_KIPPING_PULL_UP                                (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 32))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_KIPPING_PULL_UP                       (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 33))
#define FIT_PULL_UP_EXERCISE_NAME_L_PULL_UP                                      (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 34))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_L_PULL_UP                             (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 35))
#define FIT_PULL_UP_EXERCISE_NAME_SUSPENDED_CHIN_UP                              (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 36))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_SUSPENDED_CHIN_UP                     (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 37))
#define FIT_PULL_UP_EXERCISE_NAME_PULL_UP                                        (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 38))
#define FIT_PULL_UP_EXERCISE_NAME_CHIN_UP                                        (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 39))
#define FIT_PULL_UP_EXERCISE_NAME_NEUTRAL_GRIP_CHIN_UP                           (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 40))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_CHIN_UP                               (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 41))
#define FIT_PULL_UP_EXERCISE_NAME_BAND_ASSISTED_PULL_UP                          (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 42))
#define FIT_PULL_UP_EXERCISE_NAME_NEUTRAL_GRIP_PULL_UP                           (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 43))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_NEUTRAL_GRIP_CHIN_UP                  (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 44))
#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_NEUTRAL_GRIP_PULL_UP                  (FIT_CAST(FIT_PULL_UP_EXERCISE_NAME, 45))
#define FIT_PULL_UP_EXERCISE_NAME_COUNT                                          46

typedef FIT_UINT16 FIT_PUSH_UP_EXERCISE_NAME;
#define FIT_PUSH_UP_EXERCISE_NAME_INVALID                                        FIT_UINT16_INVALID
#define FIT_PUSH_UP_EXERCISE_NAME_CHEST_PRESS_WITH_BAND                          (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 0))
#define FIT_PUSH_UP_EXERCISE_NAME_ALTERNATING_STAGGERED_PUSH_UP                  (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 1))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_STAGGERED_PUSH_UP         (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 2))
#define FIT_PUSH_UP_EXERCISE_NAME_ALTERNATING_HANDS_MEDICINE_BALL_PUSH_UP        (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 3))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_HANDS_MEDICINE_BALL_PUSH_UP (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 4))
#define FIT_PUSH_UP_EXERCISE_NAME_BOSU_BALL_PUSH_UP                              (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 5))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_BOSU_BALL_PUSH_UP                     (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 6))
#define FIT_PUSH_UP_EXERCISE_NAME_CLAPPING_PUSH_UP                               (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 7))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLAPPING_PUSH_UP                      (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 8))
#define FIT_PUSH_UP_EXERCISE_NAME_CLOSE_GRIP_MEDICINE_BALL_PUSH_UP               (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 9))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLOSE_GRIP_MEDICINE_BALL_PUSH_UP      (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 10))
#define FIT_PUSH_UP_EXERCISE_NAME_CLOSE_HANDS_PUSH_UP                            (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 11))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLOSE_HANDS_PUSH_UP                   (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 12))
#define FIT_PUSH_UP_EXERCISE_NAME_DECLINE_PUSH_UP                                (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 13))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_DECLINE_PUSH_UP                       (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 14))
#define FIT_PUSH_UP_EXERCISE_NAME_DIAMOND_PUSH_UP                                (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 15))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_DIAMOND_PUSH_UP                       (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 16))
#define FIT_PUSH_UP_EXERCISE_NAME_EXPLOSIVE_CROSSOVER_PUSH_UP                    (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 17))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_EXPLOSIVE_CROSSOVER_PUSH_UP           (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 18))
#define FIT_PUSH_UP_EXERCISE_NAME_EXPLOSIVE_PUSH_UP                              (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 19))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_EXPLOSIVE_PUSH_UP                     (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 20))
#define FIT_PUSH_UP_EXERCISE_NAME_FEET_ELEVATED_SIDE_TO_SIDE_PUSH_UP             (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 21))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_FEET_ELEVATED_SIDE_TO_SIDE_PUSH_UP    (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 22))
#define FIT_PUSH_UP_EXERCISE_NAME_HAND_RELEASE_PUSH_UP                           (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 23))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_HAND_RELEASE_PUSH_UP                  (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 24))
#define FIT_PUSH_UP_EXERCISE_NAME_HANDSTAND_PUSH_UP                              (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 25))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_HANDSTAND_PUSH_UP                     (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 26))
#define FIT_PUSH_UP_EXERCISE_NAME_INCLINE_PUSH_UP                                (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 27))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_INCLINE_PUSH_UP                       (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 28))
#define FIT_PUSH_UP_EXERCISE_NAME_ISOMETRIC_EXPLOSIVE_PUSH_UP                    (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 29))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ISOMETRIC_EXPLOSIVE_PUSH_UP           (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 30))
#define FIT_PUSH_UP_EXERCISE_NAME_JUDO_PUSH_UP                                   (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 31))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_JUDO_PUSH_UP                          (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 32))
#define FIT_PUSH_UP_EXERCISE_NAME_KNEELING_PUSH_UP                               (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 33))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_KNEELING_PUSH_UP                      (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 34))
#define FIT_PUSH_UP_EXERCISE_NAME_MEDICINE_BALL_CHEST_PASS                       (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 35))
#define FIT_PUSH_UP_EXERCISE_NAME_MEDICINE_BALL_PUSH_UP                          (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 36))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_MEDICINE_BALL_PUSH_UP                 (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 37))
#define FIT_PUSH_UP_EXERCISE_NAME_ONE_ARM_PUSH_UP                                (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 38))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ONE_ARM_PUSH_UP                       (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 39))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP                               (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 40))
#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_AND_ROW                                (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 41))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_AND_ROW                       (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 42))
#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_PLUS                                   (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 43))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_PLUS                          (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 44))
#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_WITH_FEET_ON_SWISS_BALL                (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 45))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_WITH_FEET_ON_SWISS_BALL       (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 46))
#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_WITH_ONE_HAND_ON_MEDICINE_BALL         (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 47))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_WITH_ONE_HAND_ON_MEDICINE_BALL (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 48))
#define FIT_PUSH_UP_EXERCISE_NAME_SHOULDER_PUSH_UP                               (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 49))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SHOULDER_PUSH_UP                      (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 50))
#define FIT_PUSH_UP_EXERCISE_NAME_SINGLE_ARM_MEDICINE_BALL_PUSH_UP               (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 51))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SINGLE_ARM_MEDICINE_BALL_PUSH_UP      (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 52))
#define FIT_PUSH_UP_EXERCISE_NAME_SPIDERMAN_PUSH_UP                              (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 53))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SPIDERMAN_PUSH_UP                     (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 54))
#define FIT_PUSH_UP_EXERCISE_NAME_STACKED_FEET_PUSH_UP                           (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 55))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_STACKED_FEET_PUSH_UP                  (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 56))
#define FIT_PUSH_UP_EXERCISE_NAME_STAGGERED_HANDS_PUSH_UP                        (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 57))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_STAGGERED_HANDS_PUSH_UP               (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 58))
#define FIT_PUSH_UP_EXERCISE_NAME_SUSPENDED_PUSH_UP                              (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 59))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SUSPENDED_PUSH_UP                     (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 60))
#define FIT_PUSH_UP_EXERCISE_NAME_SWISS_BALL_PUSH_UP                             (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 61))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PUSH_UP                    (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 62))
#define FIT_PUSH_UP_EXERCISE_NAME_SWISS_BALL_PUSH_UP_PLUS                        (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 63))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PUSH_UP_PLUS               (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 64))
#define FIT_PUSH_UP_EXERCISE_NAME_T_PUSH_UP                                      (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 65))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_T_PUSH_UP                             (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 66))
#define FIT_PUSH_UP_EXERCISE_NAME_TRIPLE_STOP_PUSH_UP                            (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 67))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_TRIPLE_STOP_PUSH_UP                   (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 68))
#define FIT_PUSH_UP_EXERCISE_NAME_WIDE_HANDS_PUSH_UP                             (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 69))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_WIDE_HANDS_PUSH_UP                    (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 70))
#define FIT_PUSH_UP_EXERCISE_NAME_PARALLETTE_HANDSTAND_PUSH_UP                   (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 71))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PARALLETTE_HANDSTAND_PUSH_UP          (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 72))
#define FIT_PUSH_UP_EXERCISE_NAME_RING_HANDSTAND_PUSH_UP                         (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 73))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_RING_HANDSTAND_PUSH_UP                (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 74))
#define FIT_PUSH_UP_EXERCISE_NAME_RING_PUSH_UP                                   (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 75))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_RING_PUSH_UP                          (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 76))
#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP                                        (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 77))
#define FIT_PUSH_UP_EXERCISE_NAME_PILATES_PUSHUP                                 (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 78))
#define FIT_PUSH_UP_EXERCISE_NAME_DYNAMIC_PUSH_UP                                (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 79))
#define FIT_PUSH_UP_EXERCISE_NAME_KIPPING_HANDSTAND_PUSH_UP                      (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 80))
#define FIT_PUSH_UP_EXERCISE_NAME_SHOULDER_TAPPING_PUSH_UP                       (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 81))
#define FIT_PUSH_UP_EXERCISE_NAME_BICEPS_PUSH_UP                                 (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 82))
#define FIT_PUSH_UP_EXERCISE_NAME_HINDU_PUSH_UP                                  (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 83))
#define FIT_PUSH_UP_EXERCISE_NAME_PIKE_PUSH_UP                                   (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 84))
#define FIT_PUSH_UP_EXERCISE_NAME_WIDE_GRIP_PUSH_UP                              (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 85))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_BICEPS_PUSH_UP                        (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 86))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_HINDU_PUSH_UP                         (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 87))
#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PIKE_PUSH_UP                          (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 88))
#define FIT_PUSH_UP_EXERCISE_NAME_KIPPING_PARALLETTE_HANDSTAND_PUSH_UP           (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 89))
#define FIT_PUSH_UP_EXERCISE_NAME_WALL_PUSH_UP                                   (FIT_CAST(FIT_PUSH_UP_EXERCISE_NAME, 90))
#define FIT_PUSH_UP_EXERCISE_NAME_COUNT                                          91

typedef FIT_UINT16 FIT_ROW_EXERCISE_NAME;
#define FIT_ROW_EXERCISE_NAME_INVALID                                            FIT_UINT16_INVALID
#define FIT_ROW_EXERCISE_NAME_BARBELL_STRAIGHT_LEG_DEADLIFT_TO_ROW               (FIT_CAST(FIT_ROW_EXERCISE_NAME, 0))
#define FIT_ROW_EXERCISE_NAME_CABLE_ROW_STANDING                                 (FIT_CAST(FIT_ROW_EXERCISE_NAME, 1))
#define FIT_ROW_EXERCISE_NAME_DUMBBELL_ROW                                       (FIT_CAST(FIT_ROW_EXERCISE_NAME, 2))
#define FIT_ROW_EXERCISE_NAME_ELEVATED_FEET_INVERTED_ROW                         (FIT_CAST(FIT_ROW_EXERCISE_NAME, 3))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_INVERTED_ROW                (FIT_CAST(FIT_ROW_EXERCISE_NAME, 4))
#define FIT_ROW_EXERCISE_NAME_FACE_PULL                                          (FIT_CAST(FIT_ROW_EXERCISE_NAME, 5))
#define FIT_ROW_EXERCISE_NAME_FACE_PULL_WITH_EXTERNAL_ROTATION                   (FIT_CAST(FIT_ROW_EXERCISE_NAME, 6))
#define FIT_ROW_EXERCISE_NAME_INVERTED_ROW_WITH_FEET_ON_SWISS_BALL               (FIT_CAST(FIT_ROW_EXERCISE_NAME, 7))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_INVERTED_ROW_WITH_FEET_ON_SWISS_BALL      (FIT_CAST(FIT_ROW_EXERCISE_NAME, 8))
#define FIT_ROW_EXERCISE_NAME_KETTLEBELL_ROW                                     (FIT_CAST(FIT_ROW_EXERCISE_NAME, 9))
#define FIT_ROW_EXERCISE_NAME_MODIFIED_INVERTED_ROW                              (FIT_CAST(FIT_ROW_EXERCISE_NAME, 10))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_MODIFIED_INVERTED_ROW                     (FIT_CAST(FIT_ROW_EXERCISE_NAME, 11))
#define FIT_ROW_EXERCISE_NAME_NEUTRAL_GRIP_ALTERNATING_DUMBBELL_ROW              (FIT_CAST(FIT_ROW_EXERCISE_NAME, 12))
#define FIT_ROW_EXERCISE_NAME_ONE_ARM_BENT_OVER_ROW                              (FIT_CAST(FIT_ROW_EXERCISE_NAME, 13))
#define FIT_ROW_EXERCISE_NAME_ONE_LEGGED_DUMBBELL_ROW                            (FIT_CAST(FIT_ROW_EXERCISE_NAME, 14))
#define FIT_ROW_EXERCISE_NAME_RENEGADE_ROW                                       (FIT_CAST(FIT_ROW_EXERCISE_NAME, 15))
#define FIT_ROW_EXERCISE_NAME_REVERSE_GRIP_BARBELL_ROW                           (FIT_CAST(FIT_ROW_EXERCISE_NAME, 16))
#define FIT_ROW_EXERCISE_NAME_ROPE_HANDLE_CABLE_ROW                              (FIT_CAST(FIT_ROW_EXERCISE_NAME, 17))
#define FIT_ROW_EXERCISE_NAME_SEATED_CABLE_ROW                                   (FIT_CAST(FIT_ROW_EXERCISE_NAME, 18))
#define FIT_ROW_EXERCISE_NAME_SEATED_DUMBBELL_ROW                                (FIT_CAST(FIT_ROW_EXERCISE_NAME, 19))
#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_CABLE_ROW                               (FIT_CAST(FIT_ROW_EXERCISE_NAME, 20))
#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_CABLE_ROW_AND_ROTATION                  (FIT_CAST(FIT_ROW_EXERCISE_NAME, 21))
#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_INVERTED_ROW                            (FIT_CAST(FIT_ROW_EXERCISE_NAME, 22))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_SINGLE_ARM_INVERTED_ROW                   (FIT_CAST(FIT_ROW_EXERCISE_NAME, 23))
#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_NEUTRAL_GRIP_DUMBBELL_ROW               (FIT_CAST(FIT_ROW_EXERCISE_NAME, 24))
#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_NEUTRAL_GRIP_DUMBBELL_ROW_AND_ROTATION  (FIT_CAST(FIT_ROW_EXERCISE_NAME, 25))
#define FIT_ROW_EXERCISE_NAME_SUSPENDED_INVERTED_ROW                             (FIT_CAST(FIT_ROW_EXERCISE_NAME, 26))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_SUSPENDED_INVERTED_ROW                    (FIT_CAST(FIT_ROW_EXERCISE_NAME, 27))
#define FIT_ROW_EXERCISE_NAME_T_BAR_ROW                                          (FIT_CAST(FIT_ROW_EXERCISE_NAME, 28))
#define FIT_ROW_EXERCISE_NAME_TOWEL_GRIP_INVERTED_ROW                            (FIT_CAST(FIT_ROW_EXERCISE_NAME, 29))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_TOWEL_GRIP_INVERTED_ROW                   (FIT_CAST(FIT_ROW_EXERCISE_NAME, 30))
#define FIT_ROW_EXERCISE_NAME_UNDERHAND_GRIP_CABLE_ROW                           (FIT_CAST(FIT_ROW_EXERCISE_NAME, 31))
#define FIT_ROW_EXERCISE_NAME_V_GRIP_CABLE_ROW                                   (FIT_CAST(FIT_ROW_EXERCISE_NAME, 32))
#define FIT_ROW_EXERCISE_NAME_WIDE_GRIP_SEATED_CABLE_ROW                         (FIT_CAST(FIT_ROW_EXERCISE_NAME, 33))
#define FIT_ROW_EXERCISE_NAME_ALTERNATING_DUMBBELL_ROW                           (FIT_CAST(FIT_ROW_EXERCISE_NAME, 34))
#define FIT_ROW_EXERCISE_NAME_INVERTED_ROW                                       (FIT_CAST(FIT_ROW_EXERCISE_NAME, 35))
#define FIT_ROW_EXERCISE_NAME_ROW                                                (FIT_CAST(FIT_ROW_EXERCISE_NAME, 36))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_ROW                                       (FIT_CAST(FIT_ROW_EXERCISE_NAME, 37))
#define FIT_ROW_EXERCISE_NAME_INDOOR_ROW                                         (FIT_CAST(FIT_ROW_EXERCISE_NAME, 38))
#define FIT_ROW_EXERCISE_NAME_BANDED_FACE_PULLS                                  (FIT_CAST(FIT_ROW_EXERCISE_NAME, 39))
#define FIT_ROW_EXERCISE_NAME_CHEST_SUPPORTED_DUMBBELL_ROW                       (FIT_CAST(FIT_ROW_EXERCISE_NAME, 40))
#define FIT_ROW_EXERCISE_NAME_DECLINE_RING_ROW                                   (FIT_CAST(FIT_ROW_EXERCISE_NAME, 41))
#define FIT_ROW_EXERCISE_NAME_ELEVATED_RING_ROW                                  (FIT_CAST(FIT_ROW_EXERCISE_NAME, 42))
#define FIT_ROW_EXERCISE_NAME_RDL_BENT_OVER_ROW_WITH_BARBELL_DUMBBELL            (FIT_CAST(FIT_ROW_EXERCISE_NAME, 43))
#define FIT_ROW_EXERCISE_NAME_RING_ROW                                           (FIT_CAST(FIT_ROW_EXERCISE_NAME, 44))
#define FIT_ROW_EXERCISE_NAME_BARBELL_ROW                                        (FIT_CAST(FIT_ROW_EXERCISE_NAME, 45))
#define FIT_ROW_EXERCISE_NAME_BENT_OVER_ROW_WITH_BARBELL                         (FIT_CAST(FIT_ROW_EXERCISE_NAME, 46))
#define FIT_ROW_EXERCISE_NAME_BENT_OVER_ROW_WITH_DUMBELL                         (FIT_CAST(FIT_ROW_EXERCISE_NAME, 47))
#define FIT_ROW_EXERCISE_NAME_SEATED_UNDERHAND_GRIP_CABLE_ROW                    (FIT_CAST(FIT_ROW_EXERCISE_NAME, 48))
#define FIT_ROW_EXERCISE_NAME_TRX_INVERTED_ROW                                   (FIT_CAST(FIT_ROW_EXERCISE_NAME, 49))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_INVERTED_ROW                              (FIT_CAST(FIT_ROW_EXERCISE_NAME, 50))
#define FIT_ROW_EXERCISE_NAME_WEIGHTED_TRX_INVERTED_ROW                          (FIT_CAST(FIT_ROW_EXERCISE_NAME, 51))
#define FIT_ROW_EXERCISE_NAME_DUMBBELL_ROW_WHEELCHAIR                            (FIT_CAST(FIT_ROW_EXERCISE_NAME, 52))
#define FIT_ROW_EXERCISE_NAME_COUNT                                              53

typedef FIT_UINT16 FIT_SHOULDER_PRESS_EXERCISE_NAME;
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_INVALID                                 FIT_UINT16_INVALID
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_ALTERNATING_DUMBBELL_SHOULDER_PRESS     (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 0))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_ARNOLD_PRESS                            (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 1))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_FRONT_SQUAT_TO_PUSH_PRESS       (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 2))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_PUSH_PRESS                      (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 3))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_SHOULDER_PRESS                  (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 4))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DEAD_CURL_PRESS                         (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 5))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_ALTERNATING_SHOULDER_PRESS_AND_TWIST (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 6))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_HAMMER_CURL_TO_LUNGE_TO_PRESS  (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 7))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_PUSH_PRESS                     (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 8))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_FLOOR_INVERTED_SHOULDER_PRESS           (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 9))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHTED_FLOOR_INVERTED_SHOULDER_PRESS  (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 10))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_INVERTED_SHOULDER_PRESS                 (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 11))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHTED_INVERTED_SHOULDER_PRESS        (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 12))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_ONE_ARM_PUSH_PRESS                      (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 13))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_OVERHEAD_BARBELL_PRESS                  (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 14))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_OVERHEAD_DUMBBELL_PRESS                 (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 15))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SEATED_BARBELL_SHOULDER_PRESS           (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 16))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SEATED_DUMBBELL_SHOULDER_PRESS          (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 17))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SHOULDER_PRESS      (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 18))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SINGLE_ARM_STEP_UP_AND_PRESS            (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 19))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SMITH_MACHINE_OVERHEAD_PRESS            (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 20))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SPLIT_STANCE_HAMMER_CURL_TO_PRESS       (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 21))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SWISS_BALL_DUMBBELL_SHOULDER_PRESS      (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 22))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHT_PLATE_FRONT_RAISE                (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 23))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_SHOULDER_PRESS                 (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 24))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_MILITARY_PRESS                          (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 25))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_STRICT_PRESS                            (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 27))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_FRONT_RAISE                    (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 28))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_CURL_TO_OVERHEAD_PRESS_WHEELCHAIR (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 29))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_ARNOLD_PRESS_WHEELCHAIR                 (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 30))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_OVERHEAD_DUMBBELL_PRESS_WHEELCHAIR      (FIT_CAST(FIT_SHOULDER_PRESS_EXERCISE_NAME, 31))
#define FIT_SHOULDER_PRESS_EXERCISE_NAME_COUNT                                   31

typedef FIT_UINT16 FIT_SHOULDER_STABILITY_EXERCISE_NAME;
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INVALID                             FIT_UINT16_INVALID
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_90_DEGREE_CABLE_EXTERNAL_ROTATION   (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 0))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BAND_EXTERNAL_ROTATION              (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 1))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BAND_INTERNAL_ROTATION              (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 2))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BENT_ARM_LATERAL_RAISE_AND_EXTERNAL_ROTATION (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 3))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_CABLE_EXTERNAL_ROTATION             (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 4))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_DUMBBELL_FACE_PULL_WITH_EXTERNAL_ROTATION (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 5))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_I_RAISE                       (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 6))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_I_RAISE              (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 7))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_T_RAISE                       (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 8))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_T_RAISE              (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 9))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_Y_RAISE                       (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 10))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_Y_RAISE              (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 11))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_I_RAISE                     (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 12))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_I_RAISE            (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 13))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_L_RAISE                     (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 14))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_L_RAISE            (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 15))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_T_RAISE                     (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 16))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_T_RAISE            (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 17))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_W_RAISE                     (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 18))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_W_RAISE            (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 19))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_Y_RAISE                     (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 20))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_Y_RAISE            (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 21))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_LYING_EXTERNAL_ROTATION             (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 22))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SEATED_DUMBBELL_EXTERNAL_ROTATION   (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 23))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_STANDING_L_RAISE                    (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 24))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_I_RAISE                  (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 25))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_I_RAISE         (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 26))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_T_RAISE                  (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 27))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_T_RAISE         (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 28))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_W_RAISE                  (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 29))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_W_RAISE         (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 30))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_Y_RAISE                  (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 31))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_Y_RAISE         (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 32))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_CABLE_INTERNAL_ROTATION             (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 33))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_LYING_INTERNAL_ROTATION             (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 34))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SEATED_DUMBBELL_INTERNAL_ROTATION   (FIT_CAST(FIT_SHOULDER_STABILITY_EXERCISE_NAME, 35))
#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_COUNT                               36

typedef FIT_UINT16 FIT_SHRUG_EXERCISE_NAME;
#define FIT_SHRUG_EXERCISE_NAME_INVALID                                          FIT_UINT16_INVALID
#define FIT_SHRUG_EXERCISE_NAME_BARBELL_JUMP_SHRUG                               (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 0))
#define FIT_SHRUG_EXERCISE_NAME_BARBELL_SHRUG                                    (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 1))
#define FIT_SHRUG_EXERCISE_NAME_BARBELL_UPRIGHT_ROW                              (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 2))
#define FIT_SHRUG_EXERCISE_NAME_BEHIND_THE_BACK_SMITH_MACHINE_SHRUG              (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 3))
#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_JUMP_SHRUG                              (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 4))
#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_SHRUG                                   (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 5))
#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_UPRIGHT_ROW                             (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 6))
#define FIT_SHRUG_EXERCISE_NAME_INCLINE_DUMBBELL_SHRUG                           (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 7))
#define FIT_SHRUG_EXERCISE_NAME_OVERHEAD_BARBELL_SHRUG                           (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 8))
#define FIT_SHRUG_EXERCISE_NAME_OVERHEAD_DUMBBELL_SHRUG                          (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 9))
#define FIT_SHRUG_EXERCISE_NAME_SCAPTION_AND_SHRUG                               (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 10))
#define FIT_SHRUG_EXERCISE_NAME_SCAPULAR_RETRACTION                              (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 11))
#define FIT_SHRUG_EXERCISE_NAME_SERRATUS_CHAIR_SHRUG                             (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 12))
#define FIT_SHRUG_EXERCISE_NAME_WEIGHTED_SERRATUS_CHAIR_SHRUG                    (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 13))
#define FIT_SHRUG_EXERCISE_NAME_SERRATUS_SHRUG                                   (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 14))
#define FIT_SHRUG_EXERCISE_NAME_WEIGHTED_SERRATUS_SHRUG                          (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 15))
#define FIT_SHRUG_EXERCISE_NAME_WIDE_GRIP_JUMP_SHRUG                             (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 16))
#define FIT_SHRUG_EXERCISE_NAME_WIDE_GRIP_BARBELL_SHRUG                          (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 17))
#define FIT_SHRUG_EXERCISE_NAME_BEHIND_THE_BACK_SHRUG                            (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 18))
#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_SHRUG_WHEELCHAIR                        (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 19))
#define FIT_SHRUG_EXERCISE_NAME_SHRUG_WHEELCHAIR                                 (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 20))
#define FIT_SHRUG_EXERCISE_NAME_SHRUG_ARM_DOWN_WHEELCHAIR                        (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 21))
#define FIT_SHRUG_EXERCISE_NAME_SHRUG_ARM_MID_WHEELCHAIR                         (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 22))
#define FIT_SHRUG_EXERCISE_NAME_SHRUG_ARM_UP_WHEELCHAIR                          (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 23))
#define FIT_SHRUG_EXERCISE_NAME_UPRIGHT_ROW                                      (FIT_CAST(FIT_SHRUG_EXERCISE_NAME, 24))
#define FIT_SHRUG_EXERCISE_NAME_COUNT                                            25

typedef FIT_UINT16 FIT_SIT_UP_EXERCISE_NAME;
#define FIT_SIT_UP_EXERCISE_NAME_INVALID                                         FIT_UINT16_INVALID
#define FIT_SIT_UP_EXERCISE_NAME_ALTERNATING_SIT_UP                              (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 0))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_SIT_UP                     (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 1))
#define FIT_SIT_UP_EXERCISE_NAME_BENT_KNEE_V_UP                                  (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 2))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_BENT_KNEE_V_UP                         (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 3))
#define FIT_SIT_UP_EXERCISE_NAME_BUTTERFLY_SIT_UP                                (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 4))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_BUTTERFLY_SITUP                        (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 5))
#define FIT_SIT_UP_EXERCISE_NAME_CROSS_PUNCH_ROLL_UP                             (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 6))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_CROSS_PUNCH_ROLL_UP                    (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 7))
#define FIT_SIT_UP_EXERCISE_NAME_CROSSED_ARMS_SIT_UP                             (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 8))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_CROSSED_ARMS_SIT_UP                    (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 9))
#define FIT_SIT_UP_EXERCISE_NAME_GET_UP_SIT_UP                                   (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 10))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_GET_UP_SIT_UP                          (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 11))
#define FIT_SIT_UP_EXERCISE_NAME_HOVERING_SIT_UP                                 (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 12))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_HOVERING_SIT_UP                        (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 13))
#define FIT_SIT_UP_EXERCISE_NAME_KETTLEBELL_SIT_UP                               (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 14))
#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_ALTERNATING_V_UP                  (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 15))
#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_SIT_UP                            (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 16))
#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_V_UP                              (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 17))
#define FIT_SIT_UP_EXERCISE_NAME_MODIFIED_SIT_UP                                 (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 18))
#define FIT_SIT_UP_EXERCISE_NAME_NEGATIVE_SIT_UP                                 (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 19))
#define FIT_SIT_UP_EXERCISE_NAME_ONE_ARM_FULL_SIT_UP                             (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 20))
#define FIT_SIT_UP_EXERCISE_NAME_RECLINING_CIRCLE                                (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 21))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_RECLINING_CIRCLE                       (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 22))
#define FIT_SIT_UP_EXERCISE_NAME_REVERSE_CURL_UP                                 (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 23))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_REVERSE_CURL_UP                        (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 24))
#define FIT_SIT_UP_EXERCISE_NAME_SINGLE_LEG_SWISS_BALL_JACKKNIFE                 (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 25))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SWISS_BALL_JACKKNIFE        (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 26))
#define FIT_SIT_UP_EXERCISE_NAME_THE_TEASER                                      (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 27))
#define FIT_SIT_UP_EXERCISE_NAME_THE_TEASER_WEIGHTED                             (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 28))
#define FIT_SIT_UP_EXERCISE_NAME_THREE_PART_ROLL_DOWN                            (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 29))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_THREE_PART_ROLL_DOWN                   (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 30))
#define FIT_SIT_UP_EXERCISE_NAME_V_UP                                            (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 31))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_V_UP                                   (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 32))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_RUSSIAN_TWIST_ON_SWISS_BALL            (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 33))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_SIT_UP                                 (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 34))
#define FIT_SIT_UP_EXERCISE_NAME_X_ABS                                           (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 35))
#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_X_ABS                                  (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 36))
#define FIT_SIT_UP_EXERCISE_NAME_SIT_UP                                          (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 37))
#define FIT_SIT_UP_EXERCISE_NAME_GHD_SIT_UPS                                     (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 38))
#define FIT_SIT_UP_EXERCISE_NAME_SIT_UP_TURKISH_GET_UP                           (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 39))
#define FIT_SIT_UP_EXERCISE_NAME_RUSSIAN_TWIST_ON_SWISS_BALL                     (FIT_CAST(FIT_SIT_UP_EXERCISE_NAME, 40))
#define FIT_SIT_UP_EXERCISE_NAME_COUNT                                           41

typedef FIT_UINT16 FIT_SQUAT_EXERCISE_NAME;
#define FIT_SQUAT_EXERCISE_NAME_INVALID                                          FIT_UINT16_INVALID
#define FIT_SQUAT_EXERCISE_NAME_LEG_PRESS                                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 0))
#define FIT_SQUAT_EXERCISE_NAME_BACK_SQUAT_WITH_BODY_BAR                         (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 1))
#define FIT_SQUAT_EXERCISE_NAME_BACK_SQUATS                                      (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 2))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BACK_SQUATS                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 3))
#define FIT_SQUAT_EXERCISE_NAME_BALANCING_SQUAT                                  (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 4))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BALANCING_SQUAT                         (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 5))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_BACK_SQUAT                               (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 6))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_BOX_SQUAT                                (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 7))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_FRONT_SQUAT                              (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 8))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_HACK_SQUAT                               (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 9))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_HANG_SQUAT_SNATCH                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 10))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_LATERAL_STEP_UP                          (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 11))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_QUARTER_SQUAT                            (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 12))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SIFF_SQUAT                               (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 13))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SQUAT_SNATCH                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 14))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SQUAT_WITH_HEELS_RAISED                  (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 15))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_STEPOVER                                 (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 16))
#define FIT_SQUAT_EXERCISE_NAME_BARBELL_STEP_UP                                  (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 17))
#define FIT_SQUAT_EXERCISE_NAME_BENCH_SQUAT_WITH_ROTATIONAL_CHOP                 (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 18))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BENCH_SQUAT_WITH_ROTATIONAL_CHOP        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 19))
#define FIT_SQUAT_EXERCISE_NAME_BODY_WEIGHT_WALL_SQUAT                           (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 20))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_WALL_SQUAT                              (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 21))
#define FIT_SQUAT_EXERCISE_NAME_BOX_STEP_SQUAT                                   (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 22))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BOX_STEP_SQUAT                          (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 23))
#define FIT_SQUAT_EXERCISE_NAME_BRACED_SQUAT                                     (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 24))
#define FIT_SQUAT_EXERCISE_NAME_CROSSED_ARM_BARBELL_FRONT_SQUAT                  (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 25))
#define FIT_SQUAT_EXERCISE_NAME_CROSSOVER_DUMBBELL_STEP_UP                       (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 26))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_FRONT_SQUAT                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 27))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SPLIT_SQUAT                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 28))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SQUAT                                   (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 29))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SQUAT_CLEAN                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 30))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_STEPOVER                                (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 31))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_STEP_UP                                 (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 32))
#define FIT_SQUAT_EXERCISE_NAME_ELEVATED_SINGLE_LEG_SQUAT                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 33))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_ELEVATED_SINGLE_LEG_SQUAT               (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 34))
#define FIT_SQUAT_EXERCISE_NAME_FIGURE_FOUR_SQUATS                               (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 35))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_FIGURE_FOUR_SQUATS                      (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 36))
#define FIT_SQUAT_EXERCISE_NAME_GOBLET_SQUAT                                     (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 37))
#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SQUAT                                 (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 38))
#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SWING_OVERHEAD                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 39))
#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SWING_WITH_FLIP_TO_SQUAT              (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 40))
#define FIT_SQUAT_EXERCISE_NAME_LATERAL_DUMBBELL_STEP_UP                         (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 41))
#define FIT_SQUAT_EXERCISE_NAME_ONE_LEGGED_SQUAT                                 (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 42))
#define FIT_SQUAT_EXERCISE_NAME_OVERHEAD_DUMBBELL_SQUAT                          (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 43))
#define FIT_SQUAT_EXERCISE_NAME_OVERHEAD_SQUAT                                   (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 44))
#define FIT_SQUAT_EXERCISE_NAME_PARTIAL_SINGLE_LEG_SQUAT                         (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 45))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PARTIAL_SINGLE_LEG_SQUAT                (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 46))
#define FIT_SQUAT_EXERCISE_NAME_PISTOL_SQUAT                                     (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 47))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PISTOL_SQUAT                            (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 48))
#define FIT_SQUAT_EXERCISE_NAME_PLIE_SLIDES                                      (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 49))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PLIE_SLIDES                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 50))
#define FIT_SQUAT_EXERCISE_NAME_PLIE_SQUAT                                       (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 51))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PLIE_SQUAT                              (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 52))
#define FIT_SQUAT_EXERCISE_NAME_PRISONER_SQUAT                                   (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 53))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PRISONER_SQUAT                          (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 54))
#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_BENCH_GET_UP                          (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 55))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_GET_UP                 (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 56))
#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_BENCH_SQUAT                           (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 57))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_SQUAT                  (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 58))
#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_SQUAT_ON_SWISS_BALL                   (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 59))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SQUAT_ON_SWISS_BALL          (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 60))
#define FIT_SQUAT_EXERCISE_NAME_SQUAT                                            (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 61))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SQUAT                                   (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 62))
#define FIT_SQUAT_EXERCISE_NAME_SQUATS_WITH_BAND                                 (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 63))
#define FIT_SQUAT_EXERCISE_NAME_STAGGERED_SQUAT                                  (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 64))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_STAGGERED_SQUAT                         (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 65))
#define FIT_SQUAT_EXERCISE_NAME_STEP_UP                                          (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 66))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_STEP_UP                                 (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 67))
#define FIT_SQUAT_EXERCISE_NAME_SUITCASE_SQUATS                                  (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 68))
#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT                                       (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 69))
#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_SLIDE_IN                              (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 70))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_SLIDE_IN                     (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 71))
#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_TO_HIGH_PULL                          (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 72))
#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_TO_STAND                              (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 73))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_TO_STAND                     (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 74))
#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_WITH_ROTATION                         (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 75))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_WITH_ROTATION                (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 76))
#define FIT_SQUAT_EXERCISE_NAME_SWISS_BALL_BODY_WEIGHT_WALL_SQUAT                (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 77))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SWISS_BALL_WALL_SQUAT                   (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 78))
#define FIT_SQUAT_EXERCISE_NAME_THRUSTERS                                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 79))
#define FIT_SQUAT_EXERCISE_NAME_UNEVEN_SQUAT                                     (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 80))
#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_UNEVEN_SQUAT                            (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 81))
#define FIT_SQUAT_EXERCISE_NAME_WAIST_SLIMMING_SQUAT                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 82))
#define FIT_SQUAT_EXERCISE_NAME_WALL_BALL                                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 83))
#define FIT_SQUAT_EXERCISE_NAME_WIDE_STANCE_BARBELL_SQUAT                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 84))
#define FIT_SQUAT_EXERCISE_NAME_WIDE_STANCE_GOBLET_SQUAT                         (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 85))
#define FIT_SQUAT_EXERCISE_NAME_ZERCHER_SQUAT                                    (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 86))
#define FIT_SQUAT_EXERCISE_NAME_KBS_OVERHEAD                                     (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 87)) // Deprecated do not use
#define FIT_SQUAT_EXERCISE_NAME_SQUAT_AND_SIDE_KICK                              (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 88))
#define FIT_SQUAT_EXERCISE_NAME_SQUAT_JUMPS_IN_N_OUT                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 89))
#define FIT_SQUAT_EXERCISE_NAME_PILATES_PLIE_SQUATS_PARALLEL_TURNED_OUT_FLAT_AND_HEELS (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 90))
#define FIT_SQUAT_EXERCISE_NAME_RELEVE_STRAIGHT_LEG_AND_KNEE_BENT_WITH_ONE_LEG_VARIATION (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 91))
#define FIT_SQUAT_EXERCISE_NAME_ALTERNATING_BOX_DUMBBELL_STEP_UPS                (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 92))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_OVERHEAD_SQUAT_SINGLE_ARM               (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 93))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SQUAT_SNATCH                            (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 94))
#define FIT_SQUAT_EXERCISE_NAME_MEDICINE_BALL_SQUAT                              (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 95))
#define FIT_SQUAT_EXERCISE_NAME_WALL_BALL_SQUAT_AND_PRESS                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 97))
#define FIT_SQUAT_EXERCISE_NAME_SQUAT_AMERICAN_SWING                             (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 98))
#define FIT_SQUAT_EXERCISE_NAME_AIR_SQUAT                                        (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 100))
#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_THRUSTERS                               (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 101))
#define FIT_SQUAT_EXERCISE_NAME_OVERHEAD_BARBELL_SQUAT                           (FIT_CAST(FIT_SQUAT_EXERCISE_NAME, 102))
#define FIT_SQUAT_EXERCISE_NAME_COUNT                                            101

typedef FIT_UINT16 FIT_TOTAL_BODY_EXERCISE_NAME;
#define FIT_TOTAL_BODY_EXERCISE_NAME_INVALID                                     FIT_UINT16_INVALID
#define FIT_TOTAL_BODY_EXERCISE_NAME_BURPEE                                      (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 0))
#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_BURPEE                             (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 1))
#define FIT_TOTAL_BODY_EXERCISE_NAME_BURPEE_BOX_JUMP                             (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 2))
#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_BURPEE_BOX_JUMP                    (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 3))
#define FIT_TOTAL_BODY_EXERCISE_NAME_HIGH_PULL_BURPEE                            (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 4))
#define FIT_TOTAL_BODY_EXERCISE_NAME_MAN_MAKERS                                  (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 5))
#define FIT_TOTAL_BODY_EXERCISE_NAME_ONE_ARM_BURPEE                              (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 6))
#define FIT_TOTAL_BODY_EXERCISE_NAME_SQUAT_THRUSTS                               (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 7))
#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_SQUAT_THRUSTS                      (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 8))
#define FIT_TOTAL_BODY_EXERCISE_NAME_SQUAT_PLANK_PUSH_UP                         (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 9))
#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_SQUAT_PLANK_PUSH_UP                (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 10))
#define FIT_TOTAL_BODY_EXERCISE_NAME_STANDING_T_ROTATION_BALANCE                 (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 11))
#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_STANDING_T_ROTATION_BALANCE        (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 12))
#define FIT_TOTAL_BODY_EXERCISE_NAME_BARBELL_BURPEE                              (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 13))
#define FIT_TOTAL_BODY_EXERCISE_NAME_BURPEE_BOX_JUMP_OVER_YES_LITERALLY_JUMPING_OVER_THE_BOX (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 15))
#define FIT_TOTAL_BODY_EXERCISE_NAME_BURPEE_BOX_JUMP_STEP_UP_OVER                (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 16))
#define FIT_TOTAL_BODY_EXERCISE_NAME_LATERAL_BARBELL_BURPEE                      (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 17))
#define FIT_TOTAL_BODY_EXERCISE_NAME_TOTAL_BODY_BURPEE_OVER_BAR                  (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 18))
#define FIT_TOTAL_BODY_EXERCISE_NAME_BURPEE_BOX_JUMP_OVER                        (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 19))
#define FIT_TOTAL_BODY_EXERCISE_NAME_BURPEE_WHEELCHAIR                           (FIT_CAST(FIT_TOTAL_BODY_EXERCISE_NAME, 20))
#define FIT_TOTAL_BODY_EXERCISE_NAME_COUNT                                       20

typedef FIT_UINT16 FIT_MOVE_EXERCISE_NAME;
#define FIT_MOVE_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_MOVE_EXERCISE_NAME_ARCH_AND_CURL                                     (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 0))
#define FIT_MOVE_EXERCISE_NAME_ARM_CIRCLES_WITH_BALL_BAND_AND_WEIGHT             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 1))
#define FIT_MOVE_EXERCISE_NAME_ARM_STRETCH                                       (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 2))
#define FIT_MOVE_EXERCISE_NAME_BACK_MASSAGE                                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 3))
#define FIT_MOVE_EXERCISE_NAME_BELLY_BREATHING                                   (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 4))
#define FIT_MOVE_EXERCISE_NAME_BRIDGE_WITH_BALL                                  (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 5))
#define FIT_MOVE_EXERCISE_NAME_DIAMOND_LEG_CRUNCH                                (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 6))
#define FIT_MOVE_EXERCISE_NAME_DIAMOND_LEG_LIFT                                  (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 7))
#define FIT_MOVE_EXERCISE_NAME_EIGHT_POINT_SHOULDER_OPENER                       (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 8))
#define FIT_MOVE_EXERCISE_NAME_FOOT_ROLLING                                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 9))
#define FIT_MOVE_EXERCISE_NAME_FOOTWORK                                          (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 10))
#define FIT_MOVE_EXERCISE_NAME_FOOTWORK_ON_DISC                                  (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 11))
#define FIT_MOVE_EXERCISE_NAME_FORWARD_FOLD                                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 12))
#define FIT_MOVE_EXERCISE_NAME_FROG_WITH_BAND                                    (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 13))
#define FIT_MOVE_EXERCISE_NAME_HALF_ROLL_UP                                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 14))
#define FIT_MOVE_EXERCISE_NAME_HAMSTRING_CURL                                    (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 15))
#define FIT_MOVE_EXERCISE_NAME_HAMSTRING_STRETCH                                 (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 16))
#define FIT_MOVE_EXERCISE_NAME_HIP_STRETCH                                       (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 17))
#define FIT_MOVE_EXERCISE_NAME_HUG_A_TREE_WITH_BALL_BAND_AND_WEIGHT              (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 18))
#define FIT_MOVE_EXERCISE_NAME_KNEE_CIRCLES                                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 19))
#define FIT_MOVE_EXERCISE_NAME_KNEE_FOLDS_ON_DISC                                (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 20))
#define FIT_MOVE_EXERCISE_NAME_LATERAL_FLEXION                                   (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 21))
#define FIT_MOVE_EXERCISE_NAME_LEG_STRETCH_WITH_BAND                             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 22))
#define FIT_MOVE_EXERCISE_NAME_LEG_STRETCH_WITH_LEG_CIRCLES                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 23))
#define FIT_MOVE_EXERCISE_NAME_LOWER_LIFT_ON_DISC                                (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 24))
#define FIT_MOVE_EXERCISE_NAME_LUNGE_SQUAT                                       (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 25))
#define FIT_MOVE_EXERCISE_NAME_LUNGES_WITH_KNEE_LIFT                             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 26))
#define FIT_MOVE_EXERCISE_NAME_MERMAID_STRETCH                                   (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 27))
#define FIT_MOVE_EXERCISE_NAME_NEUTRAL_PELVIC_POSITION                           (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 28))
#define FIT_MOVE_EXERCISE_NAME_PELVIC_CLOCKS_ON_DISC                             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 29))
#define FIT_MOVE_EXERCISE_NAME_PILATES_PLIE_SQUATS_PARALLEL_TURNED_OUT_FLAT_AND_HEELS_WITH_CHAIR (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 30))
#define FIT_MOVE_EXERCISE_NAME_PIRIFORMIS_STRETCH                                (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 31))
#define FIT_MOVE_EXERCISE_NAME_PLANK_KNEE_CROSSES                                (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 32))
#define FIT_MOVE_EXERCISE_NAME_PLANK_KNEE_PULLS                                  (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 33))
#define FIT_MOVE_EXERCISE_NAME_PLANK_UP_DOWNS                                    (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 34))
#define FIT_MOVE_EXERCISE_NAME_PRAYER_MUDRA                                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 35))
#define FIT_MOVE_EXERCISE_NAME_PSOAS_LUNGE_STRETCH                               (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 36))
#define FIT_MOVE_EXERCISE_NAME_RIBCAGE_BREATHING                                 (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 37))
#define FIT_MOVE_EXERCISE_NAME_ROLL_DOWN                                         (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 38))
#define FIT_MOVE_EXERCISE_NAME_ROLL_UP_WITH_WEIGHT_AND_BAND                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 39))
#define FIT_MOVE_EXERCISE_NAME_SAW                                               (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 40))
#define FIT_MOVE_EXERCISE_NAME_SCAPULAR_STABILIZATION                            (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 41))
#define FIT_MOVE_EXERCISE_NAME_SCISSORS_ON_DISC                                  (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 42))
#define FIT_MOVE_EXERCISE_NAME_SEATED_HIP_STRETCHUP                              (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 43))
#define FIT_MOVE_EXERCISE_NAME_SEATED_TWIST                                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 44))
#define FIT_MOVE_EXERCISE_NAME_SHAVING_THE_HEAD_WITH_BALL_BAND_AND_WEIGHT        (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 45))
#define FIT_MOVE_EXERCISE_NAME_SPINAL_TWIST                                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 46))
#define FIT_MOVE_EXERCISE_NAME_SPINAL_TWIST_STRETCH                              (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 47))
#define FIT_MOVE_EXERCISE_NAME_SPINE_STRETCH_FORWARD                             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 48))
#define FIT_MOVE_EXERCISE_NAME_SQUAT_OPEN_ARM_TWIST_POSE                         (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 49))
#define FIT_MOVE_EXERCISE_NAME_SQUATS_WITH_BALL                                  (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 50))
#define FIT_MOVE_EXERCISE_NAME_STAND_AND_HANG                                    (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 51))
#define FIT_MOVE_EXERCISE_NAME_STANDING_SIDE_STRETCH                             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 52))
#define FIT_MOVE_EXERCISE_NAME_STANDING_SINGLE_LEG_FORWARD_BEND_WITH_IT_BAND_OPENER (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 53))
#define FIT_MOVE_EXERCISE_NAME_STRAIGHT_LEG_CRUNCH_WITH_LEG_LIFT                 (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 54))
#define FIT_MOVE_EXERCISE_NAME_STRAIGHT_LEG_CRUNCH_WITH_LEG_LIFT_WITH_BALL       (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 55))
#define FIT_MOVE_EXERCISE_NAME_STRAIGHT_LEG_CRUNCH_WITH_LEGS_CROSSED             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 56))
#define FIT_MOVE_EXERCISE_NAME_STRAIGHT_LEG_CRUNCH_WITH_LEGS_CROSSED_WITH_BALL   (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 57))
#define FIT_MOVE_EXERCISE_NAME_STRAIGHT_LEG_DIAGONAL_CRUNCH                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 58))
#define FIT_MOVE_EXERCISE_NAME_STRAIGHT_LEG_DIAGONAL_CRUNCH_WITH_BALL            (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 59))
#define FIT_MOVE_EXERCISE_NAME_TAILBONE_CURL                                     (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 60))
#define FIT_MOVE_EXERCISE_NAME_THROAT_LOCK                                       (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 61))
#define FIT_MOVE_EXERCISE_NAME_TICK_TOCK_SIDE_ROLL                               (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 62))
#define FIT_MOVE_EXERCISE_NAME_TWIST                                             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 63))
#define FIT_MOVE_EXERCISE_NAME_V_LEG_CRUNCHES                                    (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 64))
#define FIT_MOVE_EXERCISE_NAME_V_SIT                                             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 65))
#define FIT_MOVE_EXERCISE_NAME_FORWARD_FOLD_WHEELCHAIR                           (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 66))
#define FIT_MOVE_EXERCISE_NAME_FORWARD_FOLD_PLUS_WHEELCHAIR                      (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 67))
#define FIT_MOVE_EXERCISE_NAME_ARM_CIRCLES_LOW_FORWARD_WHEELCHAIR                (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 68))
#define FIT_MOVE_EXERCISE_NAME_ARM_CIRCLES_MID_FORWARD_WHEELCHAIR                (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 69))
#define FIT_MOVE_EXERCISE_NAME_ARM_CIRCLES_HIGH_FORWARD_WHEELCHAIR               (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 70))
#define FIT_MOVE_EXERCISE_NAME_ARM_CIRCLES_LOW_BACKWARD_WHEELCHAIR               (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 71))
#define FIT_MOVE_EXERCISE_NAME_ARM_CIRCLES_MID_BACKWARD_WHEELCHAIR               (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 72))
#define FIT_MOVE_EXERCISE_NAME_ARM_CIRCLES_HIGH_BACKWARD_WHEELCHAIR              (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 73))
#define FIT_MOVE_EXERCISE_NAME_CORE_TWISTS_WHEELCHAIR                            (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 74))
#define FIT_MOVE_EXERCISE_NAME_ARM_RAISE_WHEELCHAIR                              (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 75))
#define FIT_MOVE_EXERCISE_NAME_CHEST_EXPAND_WHEELCHAIR                           (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 76))
#define FIT_MOVE_EXERCISE_NAME_ARM_EXTEND_WHEELCHAIR                             (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 77))
#define FIT_MOVE_EXERCISE_NAME_FORWARD_BEND_WHEELCHAIR                           (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 78))
#define FIT_MOVE_EXERCISE_NAME_TOE_TOUCH_WHEELCHAIR                              (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 79))
#define FIT_MOVE_EXERCISE_NAME_EXTENDED_TOE_TOUCH_WHEELCHAIR                     (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 80))
#define FIT_MOVE_EXERCISE_NAME_SEATED_ARM_CIRCLES                                (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 81))
#define FIT_MOVE_EXERCISE_NAME_TRUNK_ROTATIONS                                   (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 82))
#define FIT_MOVE_EXERCISE_NAME_SEATED_TRUNK_ROTATIONS                            (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 83))
#define FIT_MOVE_EXERCISE_NAME_TOE_TOUCH                                         (FIT_CAST(FIT_MOVE_EXERCISE_NAME, 84))
#define FIT_MOVE_EXERCISE_NAME_COUNT                                             85

typedef FIT_UINT16 FIT_POSE_EXERCISE_NAME;
#define FIT_POSE_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_POSE_EXERCISE_NAME_ALL_FOURS                                         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 0))
#define FIT_POSE_EXERCISE_NAME_ANKLE_TO_KNEE                                     (FIT_CAST(FIT_POSE_EXERCISE_NAME, 1))
#define FIT_POSE_EXERCISE_NAME_BABY_COBRA                                        (FIT_CAST(FIT_POSE_EXERCISE_NAME, 2))
#define FIT_POSE_EXERCISE_NAME_BOAT                                              (FIT_CAST(FIT_POSE_EXERCISE_NAME, 3))
#define FIT_POSE_EXERCISE_NAME_BOUND_ANGLE                                       (FIT_CAST(FIT_POSE_EXERCISE_NAME, 4))
#define FIT_POSE_EXERCISE_NAME_BOUND_SEATED_SINGLE_LEG_FORWARD_BEND              (FIT_CAST(FIT_POSE_EXERCISE_NAME, 5))
#define FIT_POSE_EXERCISE_NAME_BOW                                               (FIT_CAST(FIT_POSE_EXERCISE_NAME, 6))
#define FIT_POSE_EXERCISE_NAME_BOWED_HALF_MOON                                   (FIT_CAST(FIT_POSE_EXERCISE_NAME, 7))
#define FIT_POSE_EXERCISE_NAME_BRIDGE                                            (FIT_CAST(FIT_POSE_EXERCISE_NAME, 8))
#define FIT_POSE_EXERCISE_NAME_CAT                                               (FIT_CAST(FIT_POSE_EXERCISE_NAME, 9))
#define FIT_POSE_EXERCISE_NAME_CHAIR                                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 10))
#define FIT_POSE_EXERCISE_NAME_CHILDS                                            (FIT_CAST(FIT_POSE_EXERCISE_NAME, 11))
#define FIT_POSE_EXERCISE_NAME_CORPSE                                            (FIT_CAST(FIT_POSE_EXERCISE_NAME, 12))
#define FIT_POSE_EXERCISE_NAME_COW_FACE                                          (FIT_CAST(FIT_POSE_EXERCISE_NAME, 13))
#define FIT_POSE_EXERCISE_NAME_COW                                               (FIT_CAST(FIT_POSE_EXERCISE_NAME, 14))
#define FIT_POSE_EXERCISE_NAME_DEVOTIONAL_WARRIOR                                (FIT_CAST(FIT_POSE_EXERCISE_NAME, 15))
#define FIT_POSE_EXERCISE_NAME_DOLPHIN_PLANK                                     (FIT_CAST(FIT_POSE_EXERCISE_NAME, 16))
#define FIT_POSE_EXERCISE_NAME_DOLPHIN                                           (FIT_CAST(FIT_POSE_EXERCISE_NAME, 17))
#define FIT_POSE_EXERCISE_NAME_DOWN_DOG_KNEE_TO_NOSE                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 18))
#define FIT_POSE_EXERCISE_NAME_DOWN_DOG_SPLIT                                    (FIT_CAST(FIT_POSE_EXERCISE_NAME, 19))
#define FIT_POSE_EXERCISE_NAME_DOWN_DOG_SPLIT_OPEN_HIP_BENT_KNEE                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 20))
#define FIT_POSE_EXERCISE_NAME_DOWNWARD_FACING_DOG                               (FIT_CAST(FIT_POSE_EXERCISE_NAME, 21))
#define FIT_POSE_EXERCISE_NAME_EAGLE                                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 22))
#define FIT_POSE_EXERCISE_NAME_EASY_SEATED                                       (FIT_CAST(FIT_POSE_EXERCISE_NAME, 23))
#define FIT_POSE_EXERCISE_NAME_EXTENDED_PUPPY                                    (FIT_CAST(FIT_POSE_EXERCISE_NAME, 24))
#define FIT_POSE_EXERCISE_NAME_EXTENDED_SIDE_ANGLE                               (FIT_CAST(FIT_POSE_EXERCISE_NAME, 25))
#define FIT_POSE_EXERCISE_NAME_FISH                                              (FIT_CAST(FIT_POSE_EXERCISE_NAME, 26))
#define FIT_POSE_EXERCISE_NAME_FOUR_LIMBED_STAFF                                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 27))
#define FIT_POSE_EXERCISE_NAME_FULL_SPLIT                                        (FIT_CAST(FIT_POSE_EXERCISE_NAME, 28))
#define FIT_POSE_EXERCISE_NAME_GATE                                              (FIT_CAST(FIT_POSE_EXERCISE_NAME, 29))
#define FIT_POSE_EXERCISE_NAME_HALF_CHAIR_HALF_ANKLE_TO_KNEE                     (FIT_CAST(FIT_POSE_EXERCISE_NAME, 30))
#define FIT_POSE_EXERCISE_NAME_HALF_MOON                                         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 31))
#define FIT_POSE_EXERCISE_NAME_HEAD_TO_KNEE                                      (FIT_CAST(FIT_POSE_EXERCISE_NAME, 32))
#define FIT_POSE_EXERCISE_NAME_HERON                                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 33))
#define FIT_POSE_EXERCISE_NAME_HEROS                                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 34))
#define FIT_POSE_EXERCISE_NAME_HIGH_LUNGE                                        (FIT_CAST(FIT_POSE_EXERCISE_NAME, 35))
#define FIT_POSE_EXERCISE_NAME_KNEES_CHEST_CHIN                                  (FIT_CAST(FIT_POSE_EXERCISE_NAME, 36))
#define FIT_POSE_EXERCISE_NAME_LIZARD                                            (FIT_CAST(FIT_POSE_EXERCISE_NAME, 37))
#define FIT_POSE_EXERCISE_NAME_LOCUST                                            (FIT_CAST(FIT_POSE_EXERCISE_NAME, 38))
#define FIT_POSE_EXERCISE_NAME_LOW_LUNGE                                         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 39))
#define FIT_POSE_EXERCISE_NAME_LOW_LUNGE_TWIST                                   (FIT_CAST(FIT_POSE_EXERCISE_NAME, 40))
#define FIT_POSE_EXERCISE_NAME_LOW_LUNGE_WITH_KNEE_DOWN                          (FIT_CAST(FIT_POSE_EXERCISE_NAME, 41))
#define FIT_POSE_EXERCISE_NAME_MERMAID                                           (FIT_CAST(FIT_POSE_EXERCISE_NAME, 42))
#define FIT_POSE_EXERCISE_NAME_MOUNTAIN                                          (FIT_CAST(FIT_POSE_EXERCISE_NAME, 43))
#define FIT_POSE_EXERCISE_NAME_ONE_LEGGED_DOWNWARD_FACING_POSE_OPEN_HIP_BENT_KNEE (FIT_CAST(FIT_POSE_EXERCISE_NAME, 44))
#define FIT_POSE_EXERCISE_NAME_ONE_LEGGED_PIGEON                                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 45))
#define FIT_POSE_EXERCISE_NAME_PEACEFUL_WARRIOR                                  (FIT_CAST(FIT_POSE_EXERCISE_NAME, 46))
#define FIT_POSE_EXERCISE_NAME_PLANK                                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 47))
#define FIT_POSE_EXERCISE_NAME_PLOW                                              (FIT_CAST(FIT_POSE_EXERCISE_NAME, 48))
#define FIT_POSE_EXERCISE_NAME_RECLINED_HAND_TO_FOOT                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 49))
#define FIT_POSE_EXERCISE_NAME_REVOLVED_HALF_MOON                                (FIT_CAST(FIT_POSE_EXERCISE_NAME, 50))
#define FIT_POSE_EXERCISE_NAME_REVOLVED_HEAD_TO_KNEE                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 51))
#define FIT_POSE_EXERCISE_NAME_REVOLVED_TRIANGLE                                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 52))
#define FIT_POSE_EXERCISE_NAME_RUNNERS_LUNGE                                     (FIT_CAST(FIT_POSE_EXERCISE_NAME, 53))
#define FIT_POSE_EXERCISE_NAME_SEATED_EASY_SIDE_BEND                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 54))
#define FIT_POSE_EXERCISE_NAME_SEATED_EASY_TWIST                                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 55))
#define FIT_POSE_EXERCISE_NAME_SEATED_LONG_LEG_FORWARD_BEND                      (FIT_CAST(FIT_POSE_EXERCISE_NAME, 56))
#define FIT_POSE_EXERCISE_NAME_SEATED_WIDE_LEG_FORWARD_BEND                      (FIT_CAST(FIT_POSE_EXERCISE_NAME, 57))
#define FIT_POSE_EXERCISE_NAME_SHOULDER_STAND                                    (FIT_CAST(FIT_POSE_EXERCISE_NAME, 58))
#define FIT_POSE_EXERCISE_NAME_SIDE_BOAT                                         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 59))
#define FIT_POSE_EXERCISE_NAME_SIDE_PLANK                                        (FIT_CAST(FIT_POSE_EXERCISE_NAME, 60))
#define FIT_POSE_EXERCISE_NAME_SPHINX                                            (FIT_CAST(FIT_POSE_EXERCISE_NAME, 61))
#define FIT_POSE_EXERCISE_NAME_SQUAT_OPEN_ARM_TWIST                              (FIT_CAST(FIT_POSE_EXERCISE_NAME, 62))
#define FIT_POSE_EXERCISE_NAME_SQUAT_PALM_PRESS                                  (FIT_CAST(FIT_POSE_EXERCISE_NAME, 63))
#define FIT_POSE_EXERCISE_NAME_STAFF                                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 64))
#define FIT_POSE_EXERCISE_NAME_STANDING_ARMS_UP                                  (FIT_CAST(FIT_POSE_EXERCISE_NAME, 65))
#define FIT_POSE_EXERCISE_NAME_STANDING_FORWARD_BEND_HALFWAY_UP                  (FIT_CAST(FIT_POSE_EXERCISE_NAME, 66))
#define FIT_POSE_EXERCISE_NAME_STANDING_FORWARD_BEND                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 67))
#define FIT_POSE_EXERCISE_NAME_STANDING_SIDE_OPENER                              (FIT_CAST(FIT_POSE_EXERCISE_NAME, 68))
#define FIT_POSE_EXERCISE_NAME_STANDING_SINGLE_LEG_FORWARD_BEND                  (FIT_CAST(FIT_POSE_EXERCISE_NAME, 69))
#define FIT_POSE_EXERCISE_NAME_STANDING_SPLIT                                    (FIT_CAST(FIT_POSE_EXERCISE_NAME, 70))
#define FIT_POSE_EXERCISE_NAME_STANDING_WIDE_LEG_FORWARD_BEND                    (FIT_CAST(FIT_POSE_EXERCISE_NAME, 71))
#define FIT_POSE_EXERCISE_NAME_STANDING_WIDE_LEG_FORWARD_BEND_WITH_TWIST         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 72))
#define FIT_POSE_EXERCISE_NAME_SUPINE_SPINAL_TWIST                               (FIT_CAST(FIT_POSE_EXERCISE_NAME, 73))
#define FIT_POSE_EXERCISE_NAME_TABLE_TOP                                         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 74))
#define FIT_POSE_EXERCISE_NAME_THREAD_THE_NEEDLE                                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 75))
#define FIT_POSE_EXERCISE_NAME_THUNDERBOLT                                       (FIT_CAST(FIT_POSE_EXERCISE_NAME, 76))
#define FIT_POSE_EXERCISE_NAME_THUNDERBOLT_POSE_BOTH_SIDES_ARM_STRETCH           (FIT_CAST(FIT_POSE_EXERCISE_NAME, 77))
#define FIT_POSE_EXERCISE_NAME_TREE                                              (FIT_CAST(FIT_POSE_EXERCISE_NAME, 78))
#define FIT_POSE_EXERCISE_NAME_TRIANGLE                                          (FIT_CAST(FIT_POSE_EXERCISE_NAME, 79))
#define FIT_POSE_EXERCISE_NAME_UP_DOG                                            (FIT_CAST(FIT_POSE_EXERCISE_NAME, 80))
#define FIT_POSE_EXERCISE_NAME_UPWARD_FACING_PLANK                               (FIT_CAST(FIT_POSE_EXERCISE_NAME, 81))
#define FIT_POSE_EXERCISE_NAME_WARRIOR_ONE                                       (FIT_CAST(FIT_POSE_EXERCISE_NAME, 82))
#define FIT_POSE_EXERCISE_NAME_WARRIOR_THREE                                     (FIT_CAST(FIT_POSE_EXERCISE_NAME, 83))
#define FIT_POSE_EXERCISE_NAME_WARRIOR_TWO                                       (FIT_CAST(FIT_POSE_EXERCISE_NAME, 84))
#define FIT_POSE_EXERCISE_NAME_WHEEL                                             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 85))
#define FIT_POSE_EXERCISE_NAME_WIDE_SIDE_LUNGE                                   (FIT_CAST(FIT_POSE_EXERCISE_NAME, 86))
#define FIT_POSE_EXERCISE_NAME_DEEP_BREATHING_WHEELCHAIR                         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 87))
#define FIT_POSE_EXERCISE_NAME_DEEP_BREATHING_LOW_WHEELCHAIR                     (FIT_CAST(FIT_POSE_EXERCISE_NAME, 88))
#define FIT_POSE_EXERCISE_NAME_DEEP_BREATHING_MID_WHEELCHAIR                     (FIT_CAST(FIT_POSE_EXERCISE_NAME, 89))
#define FIT_POSE_EXERCISE_NAME_DEEP_BREATHING_HIGH_WHEELCHAIR                    (FIT_CAST(FIT_POSE_EXERCISE_NAME, 90))
#define FIT_POSE_EXERCISE_NAME_PRAYER_WHEELCHAIR                                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 91))
#define FIT_POSE_EXERCISE_NAME_OVERHEAD_PRAYER_WHEELCHAIR                        (FIT_CAST(FIT_POSE_EXERCISE_NAME, 92))
#define FIT_POSE_EXERCISE_NAME_CACTUS_WHEELCHAIR                                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 93))
#define FIT_POSE_EXERCISE_NAME_BREATHING_PUNCHES_WHEELCHAIR                      (FIT_CAST(FIT_POSE_EXERCISE_NAME, 94))
#define FIT_POSE_EXERCISE_NAME_BREATHING_PUNCHES_EXTENDED_WHEELCHAIR             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 95))
#define FIT_POSE_EXERCISE_NAME_BREATHING_PUNCHES_OVERHEAD_WHEELCHAIR             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 96))
#define FIT_POSE_EXERCISE_NAME_BREATHING_PUNCHES_OVERHEAD_AND_DOWN_WHEELCHAIR    (FIT_CAST(FIT_POSE_EXERCISE_NAME, 97))
#define FIT_POSE_EXERCISE_NAME_BREATHING_PUNCHES_SIDE_WHEELCHAIR                 (FIT_CAST(FIT_POSE_EXERCISE_NAME, 98))
#define FIT_POSE_EXERCISE_NAME_BREATHING_PUNCHES_EXTENDED_SIDE_WHEELCHAIR        (FIT_CAST(FIT_POSE_EXERCISE_NAME, 99))
#define FIT_POSE_EXERCISE_NAME_BREATHING_PUNCHES_OVERHEAD_SIDE_WHEELCHAIR        (FIT_CAST(FIT_POSE_EXERCISE_NAME, 100))
#define FIT_POSE_EXERCISE_NAME_BREATHING_PUNCHES_OVERHEAD_AND_DOWN_SIDE_WHEELCHAIR (FIT_CAST(FIT_POSE_EXERCISE_NAME, 101))
#define FIT_POSE_EXERCISE_NAME_LEFT_HAND_BACK_WHEELCHAIR                         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 102))
#define FIT_POSE_EXERCISE_NAME_TRIANGLE_WHEELCHAIR                               (FIT_CAST(FIT_POSE_EXERCISE_NAME, 103))
#define FIT_POSE_EXERCISE_NAME_THREAD_THE_NEEDLE_WHEELCHAIR                      (FIT_CAST(FIT_POSE_EXERCISE_NAME, 104))
#define FIT_POSE_EXERCISE_NAME_NECK_FLEXION_AND_EXTENSION_WHEELCHAIR             (FIT_CAST(FIT_POSE_EXERCISE_NAME, 105))
#define FIT_POSE_EXERCISE_NAME_NECK_LATERAL_FLEXION_WHEELCHAIR                   (FIT_CAST(FIT_POSE_EXERCISE_NAME, 106))
#define FIT_POSE_EXERCISE_NAME_SPINE_FLEXION_AND_EXTENSION_WHEELCHAIR            (FIT_CAST(FIT_POSE_EXERCISE_NAME, 107))
#define FIT_POSE_EXERCISE_NAME_SPINE_ROTATION_WHEELCHAIR                         (FIT_CAST(FIT_POSE_EXERCISE_NAME, 108))
#define FIT_POSE_EXERCISE_NAME_SPINE_LATERAL_FLEXION_WHEELCHAIR                  (FIT_CAST(FIT_POSE_EXERCISE_NAME, 109))
#define FIT_POSE_EXERCISE_NAME_ALTERNATIVE_SKIING_WHEELCHAIR                     (FIT_CAST(FIT_POSE_EXERCISE_NAME, 110))
#define FIT_POSE_EXERCISE_NAME_REACH_FORWARD_WHEELCHAIR                          (FIT_CAST(FIT_POSE_EXERCISE_NAME, 111))
#define FIT_POSE_EXERCISE_NAME_WARRIOR_WHEELCHAIR                                (FIT_CAST(FIT_POSE_EXERCISE_NAME, 112))
#define FIT_POSE_EXERCISE_NAME_REVERSE_WARRIOR_WHEELCHAIR                        (FIT_CAST(FIT_POSE_EXERCISE_NAME, 113))
#define FIT_POSE_EXERCISE_NAME_DOWNWARD_FACING_DOG_TO_COBRA                      (FIT_CAST(FIT_POSE_EXERCISE_NAME, 114))
#define FIT_POSE_EXERCISE_NAME_SEATED_CAT_COW                                    (FIT_CAST(FIT_POSE_EXERCISE_NAME, 115))
#define FIT_POSE_EXERCISE_NAME_COUNT                                             116

typedef FIT_UINT16 FIT_TRICEPS_EXTENSION_EXERCISE_NAME;
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_INVALID                              FIT_UINT16_INVALID
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_BENCH_DIP                            (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 0))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_BENCH_DIP                   (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 1))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_BODY_WEIGHT_DIP                      (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 2))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_KICKBACK                       (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 3))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_LYING_TRICEPS_EXTENSION        (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 4))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_OVERHEAD_TRICEPS_EXTENSION     (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 5))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_DUMBBELL_KICKBACK                    (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 6))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_DUMBBELL_LYING_TRICEPS_EXTENSION     (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 7))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION    (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 8))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_INCLINE_DIP                          (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 9))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_INCLINE_DIP                 (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 10))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_INCLINE_EZ_BAR_LYING_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 11))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_DUMBBELL_PULLOVER_TO_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 12))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_EZ_BAR_TRICEPS_EXTENSION       (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 13))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_TRICEPS_EXTENSION_TO_CLOSE_GRIP_BENCH_PRESS (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 14))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_OVERHEAD_DUMBBELL_TRICEPS_EXTENSION  (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 15))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_RECLINING_TRICEPS_PRESS              (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 16))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_REVERSE_GRIP_PRESSDOWN               (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 17))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_REVERSE_GRIP_TRICEPS_PRESSDOWN       (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 18))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_ROPE_PRESSDOWN                       (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 19))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_BARBELL_OVERHEAD_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 20))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 21))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 22))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_SINGLE_ARM_OVERHEAD_DUMBBELL_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 23))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 24))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_DUMBBELL_SEATED_OVERHEAD_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 25))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_LEG_BENCH_DIP_AND_KICK        (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 26))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_DIP_AND_KICK (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 27))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_LEG_DIP                       (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 28))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_DIP              (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 29))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_STATIC_LYING_TRICEPS_EXTENSION       (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 30))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SUSPENDED_DIP                        (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 31))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SUSPENDED_DIP               (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 32))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_DUMBBELL_LYING_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 33))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_EZ_BAR_LYING_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 34))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 35))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TABLETOP_DIP                         (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 36))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_TABLETOP_DIP                (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 37))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TRICEPS_EXTENSION_ON_FLOOR           (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 38))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TRICEPS_PRESSDOWN                    (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 39))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_DIP                         (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 40))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_ALTERNATING_DUMBBELL_LYING_TRICEPS_EXTENSION (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 41))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TRICEPS_PRESS                        (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 42))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_DUMBBELL_KICKBACK_WHEELCHAIR         (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 43))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_OVERHEAD_DUMBBELL_TRICEPS_EXTENSION_WHEELCHAIR (FIT_CAST(FIT_TRICEPS_EXTENSION_EXERCISE_NAME, 44))
#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_COUNT                                45

typedef FIT_UINT16 FIT_WARM_UP_EXERCISE_NAME;
#define FIT_WARM_UP_EXERCISE_NAME_INVALID                                        FIT_UINT16_INVALID
#define FIT_WARM_UP_EXERCISE_NAME_QUADRUPED_ROCKING                              (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 0))
#define FIT_WARM_UP_EXERCISE_NAME_NECK_TILTS                                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 1))
#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_CIRCLES                                  (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 2))
#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_DORSIFLEXION_WITH_BAND                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 3))
#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_INTERNAL_ROTATION                        (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 4))
#define FIT_WARM_UP_EXERCISE_NAME_ARM_CIRCLES                                    (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 5))
#define FIT_WARM_UP_EXERCISE_NAME_BENT_OVER_REACH_TO_SKY                         (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 6))
#define FIT_WARM_UP_EXERCISE_NAME_CAT_CAMEL                                      (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 7))
#define FIT_WARM_UP_EXERCISE_NAME_ELBOW_TO_FOOT_LUNGE                            (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 8))
#define FIT_WARM_UP_EXERCISE_NAME_FORWARD_AND_BACKWARD_LEG_SWINGS                (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 9))
#define FIT_WARM_UP_EXERCISE_NAME_GROINERS                                       (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 10))
#define FIT_WARM_UP_EXERCISE_NAME_INVERTED_HAMSTRING_STRETCH                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 11))
#define FIT_WARM_UP_EXERCISE_NAME_LATERAL_DUCK_UNDER                             (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 12))
#define FIT_WARM_UP_EXERCISE_NAME_NECK_ROTATIONS                                 (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 13))
#define FIT_WARM_UP_EXERCISE_NAME_OPPOSITE_ARM_AND_LEG_BALANCE                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 14))
#define FIT_WARM_UP_EXERCISE_NAME_REACH_ROLL_AND_LIFT                            (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 15))
#define FIT_WARM_UP_EXERCISE_NAME_SCORPION                                       (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 16)) // Deprecated do not use
#define FIT_WARM_UP_EXERCISE_NAME_SHOULDER_CIRCLES                               (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 17))
#define FIT_WARM_UP_EXERCISE_NAME_SIDE_TO_SIDE_LEG_SWINGS                        (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 18))
#define FIT_WARM_UP_EXERCISE_NAME_SLEEPER_STRETCH                                (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 19))
#define FIT_WARM_UP_EXERCISE_NAME_SLIDE_OUT                                      (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 20))
#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_HIP_CROSSOVER                       (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 21))
#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_REACH_ROLL_AND_LIFT                 (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 22))
#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_WINDSHIELD_WIPERS                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 23))
#define FIT_WARM_UP_EXERCISE_NAME_THORACIC_ROTATION                              (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 24))
#define FIT_WARM_UP_EXERCISE_NAME_WALKING_HIGH_KICKS                             (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 25))
#define FIT_WARM_UP_EXERCISE_NAME_WALKING_HIGH_KNEES                             (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 26))
#define FIT_WARM_UP_EXERCISE_NAME_WALKING_KNEE_HUGS                              (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 27))
#define FIT_WARM_UP_EXERCISE_NAME_WALKING_LEG_CRADLES                            (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 28))
#define FIT_WARM_UP_EXERCISE_NAME_WALKOUT                                        (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 29))
#define FIT_WARM_UP_EXERCISE_NAME_WALKOUT_FROM_PUSH_UP_POSITION                  (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 30))
#define FIT_WARM_UP_EXERCISE_NAME_BICEPS_STRETCH                                 (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 31))
#define FIT_WARM_UP_EXERCISE_NAME_GLUTES_STRETCH                                 (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 32))
#define FIT_WARM_UP_EXERCISE_NAME_STANDING_HAMSTRING_STRETCH                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 33))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_90_90                                  (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 34))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_ABS                                    (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 35))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_BUTTERFLY                              (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 36))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_CALF                                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 37))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_CAT_COW                                (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 38))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_CHILDS_POSE                            (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 39))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_COBRA                                  (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 40))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_FOREARMS                               (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 41))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_FORWARD_GLUTES                         (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 42))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_FRONT_SPLIT                            (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 43))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_HAMSTRING                              (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 44))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_HIP_FLEXOR_AND_QUAD                    (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 45))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LAT                                    (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 46))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LEVATOR_SCAPULAE                       (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 47))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LUNGE_WITH_SPINAL_TWIST                (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 48))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LUNGING_HIP_FLEXOR                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 49))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LYING_ABDUCTION                        (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 50))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LYING_IT_BAND                          (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 51))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LYING_KNEE_TO_CHEST                    (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 52))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LYING_PIRIFORMIS                       (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 53))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_LYING_SPINAL_TWIST                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 54))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_NECK                                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 55))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_OBLIQUES                               (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 56))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_OVER_UNDER_SHOULDER                    (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 57))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_PECTORAL                               (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 58))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_PIGEON_POSE                            (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 59))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_PIRIFORMIS                             (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 60))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_QUAD                                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 61))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_SCORPION                               (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 62))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_SHOULDER                               (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 63))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_SIDE                                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 64))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_SIDE_LUNGE                             (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 65))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_SIDE_SPLIT                             (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 66))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_STANDING_IT_BAND                       (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 67))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_STRADDLE                               (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 68))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_TRICEPS                                (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 69))
#define FIT_WARM_UP_EXERCISE_NAME_STRETCH_WALL_CHEST_AND_SHOULDER                (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 70))
#define FIT_WARM_UP_EXERCISE_NAME_NECK_ROTATIONS_WHEELCHAIR                      (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 71))
#define FIT_WARM_UP_EXERCISE_NAME_HALF_KNEELING_ARM_ROTATION                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 72))
#define FIT_WARM_UP_EXERCISE_NAME_THREE_WAY_ANKLE_MOBILIZATION                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 73))
#define FIT_WARM_UP_EXERCISE_NAME_NINETY_NINETY_HIP_SWITCH                       (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 74)) // 90_90_hip_switch
#define FIT_WARM_UP_EXERCISE_NAME_ACTIVE_FROG                                    (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 75))
#define FIT_WARM_UP_EXERCISE_NAME_SHOULDER_SWEEPS                                (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 76))
#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_LUNGES                                   (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 77))
#define FIT_WARM_UP_EXERCISE_NAME_BACK_ROLL_FOAM_ROLLER                          (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 78))
#define FIT_WARM_UP_EXERCISE_NAME_BEAR_CRAWL                                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 79))
#define FIT_WARM_UP_EXERCISE_NAME_LATISSIMUS_DORSI_FOAM_ROLL                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 80))
#define FIT_WARM_UP_EXERCISE_NAME_REVERSE_T_HIP_OPENER                           (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 81))
#define FIT_WARM_UP_EXERCISE_NAME_SHOULDER_ROLLS                                 (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 82))
#define FIT_WARM_UP_EXERCISE_NAME_CHEST_OPENERS                                  (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 83))
#define FIT_WARM_UP_EXERCISE_NAME_TRICEPS_STRETCH                                (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 84))
#define FIT_WARM_UP_EXERCISE_NAME_UPPER_BACK_STRETCH                             (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 85))
#define FIT_WARM_UP_EXERCISE_NAME_HIP_CIRCLES                                    (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 86))
#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_STRETCH                                  (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 87))
#define FIT_WARM_UP_EXERCISE_NAME_MARCHING_IN_PLACE                              (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 88))
#define FIT_WARM_UP_EXERCISE_NAME_TRICEPS_STRETCH_WHEELCHAIR                     (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 89))
#define FIT_WARM_UP_EXERCISE_NAME_UPPER_BACK_STRETCH_WHEELCHAIR                  (FIT_CAST(FIT_WARM_UP_EXERCISE_NAME, 90))
#define FIT_WARM_UP_EXERCISE_NAME_COUNT                                          91

typedef FIT_UINT16 FIT_RUN_EXERCISE_NAME;
#define FIT_RUN_EXERCISE_NAME_INVALID                                            FIT_UINT16_INVALID
#define FIT_RUN_EXERCISE_NAME_RUN                                                (FIT_CAST(FIT_RUN_EXERCISE_NAME, 0))
#define FIT_RUN_EXERCISE_NAME_WALK                                               (FIT_CAST(FIT_RUN_EXERCISE_NAME, 1))
#define FIT_RUN_EXERCISE_NAME_JOG                                                (FIT_CAST(FIT_RUN_EXERCISE_NAME, 2))
#define FIT_RUN_EXERCISE_NAME_SPRINT                                             (FIT_CAST(FIT_RUN_EXERCISE_NAME, 3))
#define FIT_RUN_EXERCISE_NAME_RUN_OR_WALK                                        (FIT_CAST(FIT_RUN_EXERCISE_NAME, 4))
#define FIT_RUN_EXERCISE_NAME_SPEED_WALK                                         (FIT_CAST(FIT_RUN_EXERCISE_NAME, 5))
#define FIT_RUN_EXERCISE_NAME_WARM_UP                                            (FIT_CAST(FIT_RUN_EXERCISE_NAME, 6))
#define FIT_RUN_EXERCISE_NAME_COUNT                                              7

typedef FIT_UINT16 FIT_BIKE_EXERCISE_NAME;
#define FIT_BIKE_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_BIKE_EXERCISE_NAME_BIKE                                              (FIT_CAST(FIT_BIKE_EXERCISE_NAME, 0))
#define FIT_BIKE_EXERCISE_NAME_RIDE                                              (FIT_CAST(FIT_BIKE_EXERCISE_NAME, 1))
#define FIT_BIKE_EXERCISE_NAME_SPRINT                                            (FIT_CAST(FIT_BIKE_EXERCISE_NAME, 2))
#define FIT_BIKE_EXERCISE_NAME_COUNT                                             3

typedef FIT_UINT16 FIT_BANDED_EXERCISES_EXERCISE_NAME;
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_INVALID                               FIT_UINT16_INVALID
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_AB_TWIST                              (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 1))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_BACK_EXTENSION                        (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 2))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_BICYCLE_CRUNCH                        (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 3))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_CALF_RAISES                           (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 4))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_CHEST_PRESS                           (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 5))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_CLAM_SHELLS                           (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 6))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_CURL                                  (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 7))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_DEADBUG                               (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 8))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_DEADLIFT                              (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 9))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_DONKEY_KICK                           (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 10))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_EXTERNAL_ROTATION                     (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 11))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_EXTERNAL_ROTATION_AT_90_DEGREE_ABDUCTION (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 12))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_FACE_PULL                             (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 13))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_FIRE_HYDRANT                          (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 14))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_FLY                                   (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 15))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_FRONT_RAISE                           (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 16))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_GLUTE_BRIDGE                          (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 17))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_HAMSTRING_CURLS                       (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 18))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_HIGH_PLANK_LEG_LIFTS                  (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 19))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_HIP_EXTENSION                         (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 20))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_INTERNAL_ROTATION                     (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 21))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_JUMPING_JACK                          (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 22))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_KNEELING_CRUNCH                       (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 23))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_LATERAL_BAND_WALKS                    (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 24))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_LATERAL_RAISE                         (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 25))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_LATPULL                               (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 26))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_LEG_ABDUCTION                         (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 27))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_LEG_ADDUCTION                         (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 28))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_LEG_EXTENSION                         (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 29))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_LUNGE                                 (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 30))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_PLANK                                 (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 31))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_PULL_APART                            (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 32))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_PUSH_UPS                              (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 33))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_REVERSE_CRUNCH                        (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 34))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_ROW                                   (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 35))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SHOULDER_ABDUCTION                    (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 36))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SHOULDER_EXTENSION                    (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 37))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SHOULDER_EXTERNAL_ROTATION            (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 38))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SHOULDER_FLEXION_TO_90_DEGREES        (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 39))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SIDE_PLANK_LEG_LIFTS                  (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 40))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SIDE_RAISE                            (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 41))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SQUAT                                 (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 42))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SQUAT_TO_PRESS                        (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 43))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_TRICEP_EXTENSION                      (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 44))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_TRICEP_KICKBACK                       (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 45))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_UPRIGHT_ROW                           (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 46))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_WALL_CRAWL_WITH_EXTERNAL_ROTATION     (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 47))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_LATERAL_RAISE_WHEELCHAIR              (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 49))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_TRICEPS_EXTENSION_WHEELCHAIR          (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 50))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_CHEST_FLY_INCLINE_WHEELCHAIR          (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 51))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_CHEST_FLY_DECLINE_WHEELCHAIR          (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 52))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_PULL_DOWN_WHEELCHAIR                  (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 53))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_STRAIGHT_ARM_PULL_DOWN_WHEELCHAIR     (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 54))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_CURL_WHEELCHAIR                       (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 55))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_OVERHEAD_CURL_WHEELCHAIR              (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 56))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_FACE_PULL_WHEELCHAIR                  (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 57))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_AROUND_THE_WORLD_WHEELCHAIR           (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 58))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_PULL_APART_WHEELCHAIR                 (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 59))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_SIDE_CURL_WHEELCHAIR                  (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 60))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_OVERHEAD_PRESS_WHEELCHAIR             (FIT_CAST(FIT_BANDED_EXERCISES_EXERCISE_NAME, 61))
#define FIT_BANDED_EXERCISES_EXERCISE_NAME_COUNT                                 60

typedef FIT_UINT16 FIT_BATTLE_ROPE_EXERCISE_NAME;
#define FIT_BATTLE_ROPE_EXERCISE_NAME_INVALID                                    FIT_UINT16_INVALID
#define FIT_BATTLE_ROPE_EXERCISE_NAME_ALTERNATING_FIGURE_EIGHT                   (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 0))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_ALTERNATING_JUMP_WAVE                      (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 1))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_ALTERNATING_KNEELING_TO_STANDING_WAVE      (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 2))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_ALTERNATING_LUNGE_WAVE                     (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 3))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_ALTERNATING_SQUAT_WAVE                     (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 4))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_ALTERNATING_WAVE                           (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 5))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_ALTERNATING_WAVE_WITH_LATERAL_SHUFFLE      (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 6))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_CLAP_WAVE                                  (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 7))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_DOUBLE_ARM_FIGURE_EIGHT                    (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 8))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_DOUBLE_ARM_SIDE_TO_SIDE_SNAKE              (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 9))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_DOUBLE_ARM_SIDE_WAVE                       (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 10))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_DOUBLE_ARM_SLAM                            (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 11))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_DOUBLE_ARM_WAVE                            (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 12))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_GRAPPLER_TOSS                              (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 13))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_HIP_TOSS                                   (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 14))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_IN_AND_OUT_WAVE                            (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 15))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_INSIDE_CIRCLE                              (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 16))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_JUMPING_JACKS                              (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 17))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_OUTSIDE_CIRCLE                             (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 18))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_RAINBOW                                    (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 19))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_SIDE_PLANK_WAVE                            (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 20))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_SIDEWINDER                                 (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 21))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_SITTING_RUSSIAN_TWIST                      (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 22))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_SNAKE_WAVE                                 (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 23))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_SPLIT_JACK                                 (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 24))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_STAGE_COACH                                (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 25))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_ULTIMATE_WARRIOR                           (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 26))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_UPPER_CUTS                                 (FIT_CAST(FIT_BATTLE_ROPE_EXERCISE_NAME, 27))
#define FIT_BATTLE_ROPE_EXERCISE_NAME_COUNT                                      28

typedef FIT_UINT16 FIT_ELLIPTICAL_EXERCISE_NAME;
#define FIT_ELLIPTICAL_EXERCISE_NAME_INVALID                                     FIT_UINT16_INVALID
#define FIT_ELLIPTICAL_EXERCISE_NAME_ELLIPTICAL                                  (FIT_CAST(FIT_ELLIPTICAL_EXERCISE_NAME, 0))
#define FIT_ELLIPTICAL_EXERCISE_NAME_COUNT                                       1

typedef FIT_UINT16 FIT_FLOOR_CLIMB_EXERCISE_NAME;
#define FIT_FLOOR_CLIMB_EXERCISE_NAME_INVALID                                    FIT_UINT16_INVALID
#define FIT_FLOOR_CLIMB_EXERCISE_NAME_FLOOR_CLIMB                                (FIT_CAST(FIT_FLOOR_CLIMB_EXERCISE_NAME, 0))
#define FIT_FLOOR_CLIMB_EXERCISE_NAME_COUNT                                      1

typedef FIT_UINT16 FIT_INDOOR_BIKE_EXERCISE_NAME;
#define FIT_INDOOR_BIKE_EXERCISE_NAME_INVALID                                    FIT_UINT16_INVALID
#define FIT_INDOOR_BIKE_EXERCISE_NAME_AIR_BIKE                                   (FIT_CAST(FIT_INDOOR_BIKE_EXERCISE_NAME, 0))
#define FIT_INDOOR_BIKE_EXERCISE_NAME_ASSAULT_BIKE                               (FIT_CAST(FIT_INDOOR_BIKE_EXERCISE_NAME, 1))
#define FIT_INDOOR_BIKE_EXERCISE_NAME_STATIONARY_BIKE                            (FIT_CAST(FIT_INDOOR_BIKE_EXERCISE_NAME, 3))
#define FIT_INDOOR_BIKE_EXERCISE_NAME_COUNT                                      3

typedef FIT_UINT16 FIT_INDOOR_ROW_EXERCISE_NAME;
#define FIT_INDOOR_ROW_EXERCISE_NAME_INVALID                                     FIT_UINT16_INVALID
#define FIT_INDOOR_ROW_EXERCISE_NAME_ROWING_MACHINE                              (FIT_CAST(FIT_INDOOR_ROW_EXERCISE_NAME, 0))
#define FIT_INDOOR_ROW_EXERCISE_NAME_COUNT                                       1

typedef FIT_UINT16 FIT_LADDER_EXERCISE_NAME;
#define FIT_LADDER_EXERCISE_NAME_INVALID                                         FIT_UINT16_INVALID
#define FIT_LADDER_EXERCISE_NAME_AGILITY                                         (FIT_CAST(FIT_LADDER_EXERCISE_NAME, 0))
#define FIT_LADDER_EXERCISE_NAME_SPEED                                           (FIT_CAST(FIT_LADDER_EXERCISE_NAME, 1))
#define FIT_LADDER_EXERCISE_NAME_COUNT                                           2

typedef FIT_UINT16 FIT_SANDBAG_EXERCISE_NAME;
#define FIT_SANDBAG_EXERCISE_NAME_INVALID                                        FIT_UINT16_INVALID
#define FIT_SANDBAG_EXERCISE_NAME_AROUND_THE_WORLD                               (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 0))
#define FIT_SANDBAG_EXERCISE_NAME_BACK_SQUAT                                     (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 1))
#define FIT_SANDBAG_EXERCISE_NAME_BEAR_CRAWL_PULL_THROUGH                        (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 2))
#define FIT_SANDBAG_EXERCISE_NAME_BEAR_HUG_SQUAT                                 (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 3))
#define FIT_SANDBAG_EXERCISE_NAME_CLEAN                                          (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 4))
#define FIT_SANDBAG_EXERCISE_NAME_CLEAN_AND_PRESS                                (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 5))
#define FIT_SANDBAG_EXERCISE_NAME_CURL                                           (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 6))
#define FIT_SANDBAG_EXERCISE_NAME_FRONT_CARRY                                    (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 7))
#define FIT_SANDBAG_EXERCISE_NAME_FRONT_SQUAT                                    (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 8))
#define FIT_SANDBAG_EXERCISE_NAME_LUNGE                                          (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 9))
#define FIT_SANDBAG_EXERCISE_NAME_OVERHEAD_PRESS                                 (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 10))
#define FIT_SANDBAG_EXERCISE_NAME_PLANK_PULL_THROUGH                             (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 11))
#define FIT_SANDBAG_EXERCISE_NAME_ROTATIONAL_LUNGE                               (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 12))
#define FIT_SANDBAG_EXERCISE_NAME_ROW                                            (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 13))
#define FIT_SANDBAG_EXERCISE_NAME_RUSSIAN_TWIST                                  (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 14))
#define FIT_SANDBAG_EXERCISE_NAME_SHOULDERING                                    (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 15))
#define FIT_SANDBAG_EXERCISE_NAME_SHOVELING                                      (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 16))
#define FIT_SANDBAG_EXERCISE_NAME_SIDE_LUNGE                                     (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 17))
#define FIT_SANDBAG_EXERCISE_NAME_SPRINT                                         (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 18))
#define FIT_SANDBAG_EXERCISE_NAME_ZERCHER_SQUAT                                  (FIT_CAST(FIT_SANDBAG_EXERCISE_NAME, 19))
#define FIT_SANDBAG_EXERCISE_NAME_COUNT                                          20

typedef FIT_UINT16 FIT_SLED_EXERCISE_NAME;
#define FIT_SLED_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_SLED_EXERCISE_NAME_BACKWARD_DRAG                                     (FIT_CAST(FIT_SLED_EXERCISE_NAME, 0))
#define FIT_SLED_EXERCISE_NAME_CHEST_PRESS                                       (FIT_CAST(FIT_SLED_EXERCISE_NAME, 1))
#define FIT_SLED_EXERCISE_NAME_FORWARD_DRAG                                      (FIT_CAST(FIT_SLED_EXERCISE_NAME, 2))
#define FIT_SLED_EXERCISE_NAME_LOW_PUSH                                          (FIT_CAST(FIT_SLED_EXERCISE_NAME, 3))
#define FIT_SLED_EXERCISE_NAME_PUSH                                              (FIT_CAST(FIT_SLED_EXERCISE_NAME, 4))
#define FIT_SLED_EXERCISE_NAME_ROW                                               (FIT_CAST(FIT_SLED_EXERCISE_NAME, 5))
#define FIT_SLED_EXERCISE_NAME_COUNT                                             6

typedef FIT_UINT16 FIT_SLEDGE_HAMMER_EXERCISE_NAME;
#define FIT_SLEDGE_HAMMER_EXERCISE_NAME_INVALID                                  FIT_UINT16_INVALID
#define FIT_SLEDGE_HAMMER_EXERCISE_NAME_LATERAL_SWING                            (FIT_CAST(FIT_SLEDGE_HAMMER_EXERCISE_NAME, 0))
#define FIT_SLEDGE_HAMMER_EXERCISE_NAME_HAMMER_SLAM                              (FIT_CAST(FIT_SLEDGE_HAMMER_EXERCISE_NAME, 1))
#define FIT_SLEDGE_HAMMER_EXERCISE_NAME_COUNT                                    2

typedef FIT_UINT16 FIT_STAIR_STEPPER_EXERCISE_NAME;
#define FIT_STAIR_STEPPER_EXERCISE_NAME_INVALID                                  FIT_UINT16_INVALID
#define FIT_STAIR_STEPPER_EXERCISE_NAME_STAIR_STEPPER                            (FIT_CAST(FIT_STAIR_STEPPER_EXERCISE_NAME, 0))
#define FIT_STAIR_STEPPER_EXERCISE_NAME_COUNT                                    1

typedef FIT_UINT16 FIT_SUSPENSION_EXERCISE_NAME;
#define FIT_SUSPENSION_EXERCISE_NAME_INVALID                                     FIT_UINT16_INVALID
#define FIT_SUSPENSION_EXERCISE_NAME_CHEST_FLY                                   (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 0))
#define FIT_SUSPENSION_EXERCISE_NAME_CHEST_PRESS                                 (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 1))
#define FIT_SUSPENSION_EXERCISE_NAME_CRUNCH                                      (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 2))
#define FIT_SUSPENSION_EXERCISE_NAME_CURL                                        (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 3))
#define FIT_SUSPENSION_EXERCISE_NAME_DIP                                         (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 4))
#define FIT_SUSPENSION_EXERCISE_NAME_FACE_PULL                                   (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 5))
#define FIT_SUSPENSION_EXERCISE_NAME_GLUTE_BRIDGE                                (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 6))
#define FIT_SUSPENSION_EXERCISE_NAME_HAMSTRING_CURL                              (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 7))
#define FIT_SUSPENSION_EXERCISE_NAME_HIP_DROP                                    (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 8))
#define FIT_SUSPENSION_EXERCISE_NAME_INVERTED_ROW                                (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 9))
#define FIT_SUSPENSION_EXERCISE_NAME_KNEE_DRIVE_JUMP                             (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 10))
#define FIT_SUSPENSION_EXERCISE_NAME_KNEE_TO_CHEST                               (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 11))
#define FIT_SUSPENSION_EXERCISE_NAME_LAT_PULLOVER                                (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 12))
#define FIT_SUSPENSION_EXERCISE_NAME_LUNGE                                       (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 13))
#define FIT_SUSPENSION_EXERCISE_NAME_MOUNTAIN_CLIMBER                            (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 14))
#define FIT_SUSPENSION_EXERCISE_NAME_PENDULUM                                    (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 15))
#define FIT_SUSPENSION_EXERCISE_NAME_PIKE                                        (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 16))
#define FIT_SUSPENSION_EXERCISE_NAME_PLANK                                       (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 17))
#define FIT_SUSPENSION_EXERCISE_NAME_POWER_PULL                                  (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 18))
#define FIT_SUSPENSION_EXERCISE_NAME_PULL_UP                                     (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 19))
#define FIT_SUSPENSION_EXERCISE_NAME_PUSH_UP                                     (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 20))
#define FIT_SUSPENSION_EXERCISE_NAME_REVERSE_MOUNTAIN_CLIMBER                    (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 21))
#define FIT_SUSPENSION_EXERCISE_NAME_REVERSE_PLANK                               (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 22))
#define FIT_SUSPENSION_EXERCISE_NAME_ROLLOUT                                     (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 23))
#define FIT_SUSPENSION_EXERCISE_NAME_ROW                                         (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 24))
#define FIT_SUSPENSION_EXERCISE_NAME_SIDE_LUNGE                                  (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 25))
#define FIT_SUSPENSION_EXERCISE_NAME_SIDE_PLANK                                  (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 26))
#define FIT_SUSPENSION_EXERCISE_NAME_SINGLE_LEG_DEADLIFT                         (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 27))
#define FIT_SUSPENSION_EXERCISE_NAME_SINGLE_LEG_SQUAT                            (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 28))
#define FIT_SUSPENSION_EXERCISE_NAME_SIT_UP                                      (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 29))
#define FIT_SUSPENSION_EXERCISE_NAME_SPLIT                                       (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 30))
#define FIT_SUSPENSION_EXERCISE_NAME_SQUAT                                       (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 31))
#define FIT_SUSPENSION_EXERCISE_NAME_SQUAT_JUMP                                  (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 32))
#define FIT_SUSPENSION_EXERCISE_NAME_TRICEP_PRESS                                (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 33))
#define FIT_SUSPENSION_EXERCISE_NAME_Y_FLY                                       (FIT_CAST(FIT_SUSPENSION_EXERCISE_NAME, 34))
#define FIT_SUSPENSION_EXERCISE_NAME_COUNT                                       35

typedef FIT_UINT16 FIT_TIRE_EXERCISE_NAME;
#define FIT_TIRE_EXERCISE_NAME_INVALID                                           FIT_UINT16_INVALID
#define FIT_TIRE_EXERCISE_NAME_FLIP                                              (FIT_CAST(FIT_TIRE_EXERCISE_NAME, 0))
#define FIT_TIRE_EXERCISE_NAME_COUNT                                             1

typedef FIT_UINT16 FIT_BIKE_OUTDOOR_EXERCISE_NAME;
#define FIT_BIKE_OUTDOOR_EXERCISE_NAME_INVALID                                   FIT_UINT16_INVALID
#define FIT_BIKE_OUTDOOR_EXERCISE_NAME_BIKE                                      (FIT_CAST(FIT_BIKE_OUTDOOR_EXERCISE_NAME, 0))
#define FIT_BIKE_OUTDOOR_EXERCISE_NAME_COUNT                                     1

typedef FIT_UINT16 FIT_RUN_INDOOR_EXERCISE_NAME;
#define FIT_RUN_INDOOR_EXERCISE_NAME_INVALID                                     FIT_UINT16_INVALID
#define FIT_RUN_INDOOR_EXERCISE_NAME_INDOOR_TRACK_RUN                            (FIT_CAST(FIT_RUN_INDOOR_EXERCISE_NAME, 0))
#define FIT_RUN_INDOOR_EXERCISE_NAME_TREADMILL                                   (FIT_CAST(FIT_RUN_INDOOR_EXERCISE_NAME, 1))
#define FIT_RUN_INDOOR_EXERCISE_NAME_COUNT                                       2

typedef FIT_ENUM FIT_WATER_TYPE;
#define FIT_WATER_TYPE_INVALID                                                   FIT_ENUM_INVALID
#define FIT_WATER_TYPE_FRESH                                                     (FIT_CAST(FIT_WATER_TYPE, 0))
#define FIT_WATER_TYPE_SALT                                                      (FIT_CAST(FIT_WATER_TYPE, 1))
#define FIT_WATER_TYPE_EN13319                                                   (FIT_CAST(FIT_WATER_TYPE, 2))
#define FIT_WATER_TYPE_CUSTOM                                                    (FIT_CAST(FIT_WATER_TYPE, 3))
#define FIT_WATER_TYPE_COUNT                                                     4

typedef FIT_ENUM FIT_TISSUE_MODEL_TYPE;
#define FIT_TISSUE_MODEL_TYPE_INVALID                                            FIT_ENUM_INVALID
#define FIT_TISSUE_MODEL_TYPE_ZHL_16C                                            (FIT_CAST(FIT_TISSUE_MODEL_TYPE, 0)) // Buhlmann's decompression algorithm, version C
#define FIT_TISSUE_MODEL_TYPE_COUNT                                              1

typedef FIT_ENUM FIT_DIVE_GAS_STATUS;
#define FIT_DIVE_GAS_STATUS_INVALID                                              FIT_ENUM_INVALID
#define FIT_DIVE_GAS_STATUS_DISABLED                                             (FIT_CAST(FIT_DIVE_GAS_STATUS, 0))
#define FIT_DIVE_GAS_STATUS_ENABLED                                              (FIT_CAST(FIT_DIVE_GAS_STATUS, 1))
#define FIT_DIVE_GAS_STATUS_BACKUP_ONLY                                          (FIT_CAST(FIT_DIVE_GAS_STATUS, 2))
#define FIT_DIVE_GAS_STATUS_COUNT                                                3

typedef FIT_ENUM FIT_DIVE_ALERT;
#define FIT_DIVE_ALERT_INVALID                                                   FIT_ENUM_INVALID
#define FIT_DIVE_ALERT_NDL_REACHED                                               (FIT_CAST(FIT_DIVE_ALERT, 0))
#define FIT_DIVE_ALERT_GAS_SWITCH_PROMPTED                                       (FIT_CAST(FIT_DIVE_ALERT, 1))
#define FIT_DIVE_ALERT_NEAR_SURFACE                                              (FIT_CAST(FIT_DIVE_ALERT, 2))
#define FIT_DIVE_ALERT_APPROACHING_NDL                                           (FIT_CAST(FIT_DIVE_ALERT, 3))
#define FIT_DIVE_ALERT_PO2_WARN                                                  (FIT_CAST(FIT_DIVE_ALERT, 4))
#define FIT_DIVE_ALERT_PO2_CRIT_HIGH                                             (FIT_CAST(FIT_DIVE_ALERT, 5))
#define FIT_DIVE_ALERT_PO2_CRIT_LOW                                              (FIT_CAST(FIT_DIVE_ALERT, 6))
#define FIT_DIVE_ALERT_TIME_ALERT                                                (FIT_CAST(FIT_DIVE_ALERT, 7))
#define FIT_DIVE_ALERT_DEPTH_ALERT                                               (FIT_CAST(FIT_DIVE_ALERT, 8))
#define FIT_DIVE_ALERT_DECO_CEILING_BROKEN                                       (FIT_CAST(FIT_DIVE_ALERT, 9))
#define FIT_DIVE_ALERT_DECO_COMPLETE                                             (FIT_CAST(FIT_DIVE_ALERT, 10))
#define FIT_DIVE_ALERT_SAFETY_STOP_BROKEN                                        (FIT_CAST(FIT_DIVE_ALERT, 11))
#define FIT_DIVE_ALERT_SAFETY_STOP_COMPLETE                                      (FIT_CAST(FIT_DIVE_ALERT, 12))
#define FIT_DIVE_ALERT_CNS_WARNING                                               (FIT_CAST(FIT_DIVE_ALERT, 13))
#define FIT_DIVE_ALERT_CNS_CRITICAL                                              (FIT_CAST(FIT_DIVE_ALERT, 14))
#define FIT_DIVE_ALERT_OTU_WARNING                                               (FIT_CAST(FIT_DIVE_ALERT, 15))
#define FIT_DIVE_ALERT_OTU_CRITICAL                                              (FIT_CAST(FIT_DIVE_ALERT, 16))
#define FIT_DIVE_ALERT_ASCENT_CRITICAL                                           (FIT_CAST(FIT_DIVE_ALERT, 17))
#define FIT_DIVE_ALERT_ALERT_DISMISSED_BY_KEY                                    (FIT_CAST(FIT_DIVE_ALERT, 18))
#define FIT_DIVE_ALERT_ALERT_DISMISSED_BY_TIMEOUT                                (FIT_CAST(FIT_DIVE_ALERT, 19))
#define FIT_DIVE_ALERT_BATTERY_LOW                                               (FIT_CAST(FIT_DIVE_ALERT, 20))
#define FIT_DIVE_ALERT_BATTERY_CRITICAL                                          (FIT_CAST(FIT_DIVE_ALERT, 21))
#define FIT_DIVE_ALERT_SAFETY_STOP_STARTED                                       (FIT_CAST(FIT_DIVE_ALERT, 22))
#define FIT_DIVE_ALERT_APPROACHING_FIRST_DECO_STOP                               (FIT_CAST(FIT_DIVE_ALERT, 23))
#define FIT_DIVE_ALERT_SETPOINT_SWITCH_AUTO_LOW                                  (FIT_CAST(FIT_DIVE_ALERT, 24))
#define FIT_DIVE_ALERT_SETPOINT_SWITCH_AUTO_HIGH                                 (FIT_CAST(FIT_DIVE_ALERT, 25))
#define FIT_DIVE_ALERT_SETPOINT_SWITCH_MANUAL_LOW                                (FIT_CAST(FIT_DIVE_ALERT, 26))
#define FIT_DIVE_ALERT_SETPOINT_SWITCH_MANUAL_HIGH                               (FIT_CAST(FIT_DIVE_ALERT, 27))
#define FIT_DIVE_ALERT_AUTO_SETPOINT_SWITCH_IGNORED                              (FIT_CAST(FIT_DIVE_ALERT, 28))
#define FIT_DIVE_ALERT_SWITCHED_TO_OPEN_CIRCUIT                                  (FIT_CAST(FIT_DIVE_ALERT, 29))
#define FIT_DIVE_ALERT_SWITCHED_TO_CLOSED_CIRCUIT                                (FIT_CAST(FIT_DIVE_ALERT, 30))
#define FIT_DIVE_ALERT_TANK_BATTERY_LOW                                          (FIT_CAST(FIT_DIVE_ALERT, 32))
#define FIT_DIVE_ALERT_PO2_CCR_DIL_LOW                                           (FIT_CAST(FIT_DIVE_ALERT, 33)) // ccr diluent has low po2
#define FIT_DIVE_ALERT_DECO_STOP_CLEARED                                         (FIT_CAST(FIT_DIVE_ALERT, 34)) // a deco stop has been cleared
#define FIT_DIVE_ALERT_APNEA_NEUTRAL_BUOYANCY                                    (FIT_CAST(FIT_DIVE_ALERT, 35)) // Target Depth Apnea Alarm triggered
#define FIT_DIVE_ALERT_APNEA_TARGET_DEPTH                                        (FIT_CAST(FIT_DIVE_ALERT, 36)) // Neutral Buoyance Apnea Alarm triggered
#define FIT_DIVE_ALERT_APNEA_SURFACE                                             (FIT_CAST(FIT_DIVE_ALERT, 37)) // Surface Apnea Alarm triggered
#define FIT_DIVE_ALERT_APNEA_HIGH_SPEED                                          (FIT_CAST(FIT_DIVE_ALERT, 38)) // High Speed Apnea Alarm triggered
#define FIT_DIVE_ALERT_APNEA_LOW_SPEED                                           (FIT_CAST(FIT_DIVE_ALERT, 39)) // Low Speed Apnea Alarm triggered
#define FIT_DIVE_ALERT_COUNT                                                     39

typedef FIT_ENUM FIT_DIVE_ALARM_TYPE;
#define FIT_DIVE_ALARM_TYPE_INVALID                                              FIT_ENUM_INVALID
#define FIT_DIVE_ALARM_TYPE_DEPTH                                                (FIT_CAST(FIT_DIVE_ALARM_TYPE, 0)) // Alarm when a certain depth is crossed
#define FIT_DIVE_ALARM_TYPE_TIME                                                 (FIT_CAST(FIT_DIVE_ALARM_TYPE, 1)) // Alarm when a certain time has transpired
#define FIT_DIVE_ALARM_TYPE_SPEED                                                (FIT_CAST(FIT_DIVE_ALARM_TYPE, 2)) // Alarm when a certain ascent or descent rate is exceeded
#define FIT_DIVE_ALARM_TYPE_COUNT                                                3

typedef FIT_ENUM FIT_DIVE_BACKLIGHT_MODE;
#define FIT_DIVE_BACKLIGHT_MODE_INVALID                                          FIT_ENUM_INVALID
#define FIT_DIVE_BACKLIGHT_MODE_AT_DEPTH                                         (FIT_CAST(FIT_DIVE_BACKLIGHT_MODE, 0))
#define FIT_DIVE_BACKLIGHT_MODE_ALWAYS_ON                                        (FIT_CAST(FIT_DIVE_BACKLIGHT_MODE, 1))
#define FIT_DIVE_BACKLIGHT_MODE_COUNT                                            2

typedef FIT_ENUM FIT_SLEEP_LEVEL;
#define FIT_SLEEP_LEVEL_INVALID                                                  FIT_ENUM_INVALID
#define FIT_SLEEP_LEVEL_UNMEASURABLE                                             (FIT_CAST(FIT_SLEEP_LEVEL, 0))
#define FIT_SLEEP_LEVEL_AWAKE                                                    (FIT_CAST(FIT_SLEEP_LEVEL, 1))
#define FIT_SLEEP_LEVEL_LIGHT                                                    (FIT_CAST(FIT_SLEEP_LEVEL, 2))
#define FIT_SLEEP_LEVEL_DEEP                                                     (FIT_CAST(FIT_SLEEP_LEVEL, 3))
#define FIT_SLEEP_LEVEL_REM                                                      (FIT_CAST(FIT_SLEEP_LEVEL, 4))
#define FIT_SLEEP_LEVEL_COUNT                                                    5

typedef FIT_ENUM FIT_SPO2_MEASUREMENT_TYPE;
#define FIT_SPO2_MEASUREMENT_TYPE_INVALID                                        FIT_ENUM_INVALID
#define FIT_SPO2_MEASUREMENT_TYPE_OFF_WRIST                                      (FIT_CAST(FIT_SPO2_MEASUREMENT_TYPE, 0))
#define FIT_SPO2_MEASUREMENT_TYPE_SPOT_CHECK                                     (FIT_CAST(FIT_SPO2_MEASUREMENT_TYPE, 1))
#define FIT_SPO2_MEASUREMENT_TYPE_CONTINUOUS_CHECK                               (FIT_CAST(FIT_SPO2_MEASUREMENT_TYPE, 2))
#define FIT_SPO2_MEASUREMENT_TYPE_PERIODIC                                       (FIT_CAST(FIT_SPO2_MEASUREMENT_TYPE, 3))
#define FIT_SPO2_MEASUREMENT_TYPE_COUNT                                          4

typedef FIT_ENUM FIT_CCR_SETPOINT_SWITCH_MODE;
#define FIT_CCR_SETPOINT_SWITCH_MODE_INVALID                                     FIT_ENUM_INVALID
#define FIT_CCR_SETPOINT_SWITCH_MODE_MANUAL                                      (FIT_CAST(FIT_CCR_SETPOINT_SWITCH_MODE, 0)) // User switches setpoints manually
#define FIT_CCR_SETPOINT_SWITCH_MODE_AUTOMATIC                                   (FIT_CAST(FIT_CCR_SETPOINT_SWITCH_MODE, 1)) // Switch automatically based on depth
#define FIT_CCR_SETPOINT_SWITCH_MODE_COUNT                                       2

typedef FIT_ENUM FIT_DIVE_GAS_MODE;
#define FIT_DIVE_GAS_MODE_INVALID                                                FIT_ENUM_INVALID
#define FIT_DIVE_GAS_MODE_OPEN_CIRCUIT                                           (FIT_CAST(FIT_DIVE_GAS_MODE, 0))
#define FIT_DIVE_GAS_MODE_CLOSED_CIRCUIT_DILUENT                                 (FIT_CAST(FIT_DIVE_GAS_MODE, 1))
#define FIT_DIVE_GAS_MODE_COUNT                                                  2

typedef FIT_ENUM FIT_PROJECTILE_TYPE;
#define FIT_PROJECTILE_TYPE_INVALID                                              FIT_ENUM_INVALID
#define FIT_PROJECTILE_TYPE_ARROW                                                (FIT_CAST(FIT_PROJECTILE_TYPE, 0)) // Arrow projectile type
#define FIT_PROJECTILE_TYPE_RIFLE_CARTRIDGE                                      (FIT_CAST(FIT_PROJECTILE_TYPE, 1)) // Rifle cartridge projectile type
#define FIT_PROJECTILE_TYPE_PISTOL_CARTRIDGE                                     (FIT_CAST(FIT_PROJECTILE_TYPE, 2)) // Pistol cartridge projectile type
#define FIT_PROJECTILE_TYPE_SHOTSHELL                                            (FIT_CAST(FIT_PROJECTILE_TYPE, 3)) // Shotshell projectile type
#define FIT_PROJECTILE_TYPE_AIR_RIFLE_PELLET                                     (FIT_CAST(FIT_PROJECTILE_TYPE, 4)) // Air rifle pellet projectile type
#define FIT_PROJECTILE_TYPE_OTHER                                                (FIT_CAST(FIT_PROJECTILE_TYPE, 5)) // Other projectile type
#define FIT_PROJECTILE_TYPE_COUNT                                                6

typedef FIT_UINT16 FIT_FAVERO_PRODUCT;
#define FIT_FAVERO_PRODUCT_INVALID                                               FIT_UINT16_INVALID
#define FIT_FAVERO_PRODUCT_ASSIOMA_UNO                                           (FIT_CAST(FIT_FAVERO_PRODUCT, 10))
#define FIT_FAVERO_PRODUCT_ASSIOMA_DUO                                           (FIT_CAST(FIT_FAVERO_PRODUCT, 12))
#define FIT_FAVERO_PRODUCT_COUNT                                                 2

typedef FIT_ENUM FIT_SPLIT_TYPE;
#define FIT_SPLIT_TYPE_INVALID                                                   FIT_ENUM_INVALID
#define FIT_SPLIT_TYPE_ASCENT_SPLIT                                              (FIT_CAST(FIT_SPLIT_TYPE, 1))
#define FIT_SPLIT_TYPE_DESCENT_SPLIT                                             (FIT_CAST(FIT_SPLIT_TYPE, 2))
#define FIT_SPLIT_TYPE_INTERVAL_ACTIVE                                           (FIT_CAST(FIT_SPLIT_TYPE, 3))
#define FIT_SPLIT_TYPE_INTERVAL_REST                                             (FIT_CAST(FIT_SPLIT_TYPE, 4))
#define FIT_SPLIT_TYPE_INTERVAL_WARMUP                                           (FIT_CAST(FIT_SPLIT_TYPE, 5))
#define FIT_SPLIT_TYPE_INTERVAL_COOLDOWN                                         (FIT_CAST(FIT_SPLIT_TYPE, 6))
#define FIT_SPLIT_TYPE_INTERVAL_RECOVERY                                         (FIT_CAST(FIT_SPLIT_TYPE, 7))
#define FIT_SPLIT_TYPE_INTERVAL_OTHER                                            (FIT_CAST(FIT_SPLIT_TYPE, 8))
#define FIT_SPLIT_TYPE_CLIMB_ACTIVE                                              (FIT_CAST(FIT_SPLIT_TYPE, 9))
#define FIT_SPLIT_TYPE_CLIMB_REST                                                (FIT_CAST(FIT_SPLIT_TYPE, 10))
#define FIT_SPLIT_TYPE_SURF_ACTIVE                                               (FIT_CAST(FIT_SPLIT_TYPE, 11))
#define FIT_SPLIT_TYPE_RUN_ACTIVE                                                (FIT_CAST(FIT_SPLIT_TYPE, 12))
#define FIT_SPLIT_TYPE_RUN_REST                                                  (FIT_CAST(FIT_SPLIT_TYPE, 13))
#define FIT_SPLIT_TYPE_WORKOUT_ROUND                                             (FIT_CAST(FIT_SPLIT_TYPE, 14))
#define FIT_SPLIT_TYPE_RWD_RUN                                                   (FIT_CAST(FIT_SPLIT_TYPE, 17)) // run/walk detection running
#define FIT_SPLIT_TYPE_RWD_WALK                                                  (FIT_CAST(FIT_SPLIT_TYPE, 18)) // run/walk detection walking
#define FIT_SPLIT_TYPE_WINDSURF_ACTIVE                                           (FIT_CAST(FIT_SPLIT_TYPE, 21))
#define FIT_SPLIT_TYPE_RWD_STAND                                                 (FIT_CAST(FIT_SPLIT_TYPE, 22)) // run/walk detection standing
#define FIT_SPLIT_TYPE_TRANSITION                                                (FIT_CAST(FIT_SPLIT_TYPE, 23)) // Marks the time going from ascent_split to descent_split/used in backcountry ski
#define FIT_SPLIT_TYPE_SKI_LIFT_SPLIT                                            (FIT_CAST(FIT_SPLIT_TYPE, 28))
#define FIT_SPLIT_TYPE_SKI_RUN_SPLIT                                             (FIT_CAST(FIT_SPLIT_TYPE, 29))
#define FIT_SPLIT_TYPE_COUNT                                                     21

typedef FIT_ENUM FIT_CLIMB_PRO_EVENT;
#define FIT_CLIMB_PRO_EVENT_INVALID                                              FIT_ENUM_INVALID
#define FIT_CLIMB_PRO_EVENT_APPROACH                                             (FIT_CAST(FIT_CLIMB_PRO_EVENT, 0))
#define FIT_CLIMB_PRO_EVENT_START                                                (FIT_CAST(FIT_CLIMB_PRO_EVENT, 1))
#define FIT_CLIMB_PRO_EVENT_COMPLETE                                             (FIT_CAST(FIT_CLIMB_PRO_EVENT, 2))
#define FIT_CLIMB_PRO_EVENT_COUNT                                                3

typedef FIT_ENUM FIT_GAS_CONSUMPTION_RATE_TYPE;
#define FIT_GAS_CONSUMPTION_RATE_TYPE_INVALID                                    FIT_ENUM_INVALID
#define FIT_GAS_CONSUMPTION_RATE_TYPE_PRESSURE_SAC                               (FIT_CAST(FIT_GAS_CONSUMPTION_RATE_TYPE, 0)) // Pressure-based Surface Air Consumption
#define FIT_GAS_CONSUMPTION_RATE_TYPE_VOLUME_SAC                                 (FIT_CAST(FIT_GAS_CONSUMPTION_RATE_TYPE, 1)) // Volumetric Surface Air Consumption
#define FIT_GAS_CONSUMPTION_RATE_TYPE_RMV                                        (FIT_CAST(FIT_GAS_CONSUMPTION_RATE_TYPE, 2)) // Respiratory Minute Volume
#define FIT_GAS_CONSUMPTION_RATE_TYPE_COUNT                                      3

typedef FIT_ENUM FIT_TAP_SENSITIVITY;
#define FIT_TAP_SENSITIVITY_INVALID                                              FIT_ENUM_INVALID
#define FIT_TAP_SENSITIVITY_HIGH                                                 (FIT_CAST(FIT_TAP_SENSITIVITY, 0))
#define FIT_TAP_SENSITIVITY_MEDIUM                                               (FIT_CAST(FIT_TAP_SENSITIVITY, 1))
#define FIT_TAP_SENSITIVITY_LOW                                                  (FIT_CAST(FIT_TAP_SENSITIVITY, 2))
#define FIT_TAP_SENSITIVITY_COUNT                                                3

typedef FIT_ENUM FIT_RADAR_THREAT_LEVEL_TYPE;
#define FIT_RADAR_THREAT_LEVEL_TYPE_INVALID                                      FIT_ENUM_INVALID
#define FIT_RADAR_THREAT_LEVEL_TYPE_THREAT_UNKNOWN                               (FIT_CAST(FIT_RADAR_THREAT_LEVEL_TYPE, 0))
#define FIT_RADAR_THREAT_LEVEL_TYPE_THREAT_NONE                                  (FIT_CAST(FIT_RADAR_THREAT_LEVEL_TYPE, 1))
#define FIT_RADAR_THREAT_LEVEL_TYPE_THREAT_APPROACHING                           (FIT_CAST(FIT_RADAR_THREAT_LEVEL_TYPE, 2))
#define FIT_RADAR_THREAT_LEVEL_TYPE_THREAT_APPROACHING_FAST                      (FIT_CAST(FIT_RADAR_THREAT_LEVEL_TYPE, 3))
#define FIT_RADAR_THREAT_LEVEL_TYPE_COUNT                                        4

typedef FIT_ENUM FIT_MAX_MET_SPEED_SOURCE;
#define FIT_MAX_MET_SPEED_SOURCE_INVALID                                         FIT_ENUM_INVALID
#define FIT_MAX_MET_SPEED_SOURCE_ONBOARD_GPS                                     (FIT_CAST(FIT_MAX_MET_SPEED_SOURCE, 0))
#define FIT_MAX_MET_SPEED_SOURCE_CONNECTED_GPS                                   (FIT_CAST(FIT_MAX_MET_SPEED_SOURCE, 1))
#define FIT_MAX_MET_SPEED_SOURCE_CADENCE                                         (FIT_CAST(FIT_MAX_MET_SPEED_SOURCE, 2))
#define FIT_MAX_MET_SPEED_SOURCE_COUNT                                           3

typedef FIT_ENUM FIT_MAX_MET_HEART_RATE_SOURCE;
#define FIT_MAX_MET_HEART_RATE_SOURCE_INVALID                                    FIT_ENUM_INVALID
#define FIT_MAX_MET_HEART_RATE_SOURCE_WHR                                        (FIT_CAST(FIT_MAX_MET_HEART_RATE_SOURCE, 0)) // Wrist Heart Rate Monitor
#define FIT_MAX_MET_HEART_RATE_SOURCE_HRM                                        (FIT_CAST(FIT_MAX_MET_HEART_RATE_SOURCE, 1)) // Chest Strap Heart Rate Monitor
#define FIT_MAX_MET_HEART_RATE_SOURCE_COUNT                                      2

typedef FIT_ENUM FIT_HRV_STATUS;
#define FIT_HRV_STATUS_INVALID                                                   FIT_ENUM_INVALID
#define FIT_HRV_STATUS_NONE                                                      (FIT_CAST(FIT_HRV_STATUS, 0))
#define FIT_HRV_STATUS_POOR                                                      (FIT_CAST(FIT_HRV_STATUS, 1))
#define FIT_HRV_STATUS_LOW                                                       (FIT_CAST(FIT_HRV_STATUS, 2))
#define FIT_HRV_STATUS_UNBALANCED                                                (FIT_CAST(FIT_HRV_STATUS, 3))
#define FIT_HRV_STATUS_BALANCED                                                  (FIT_CAST(FIT_HRV_STATUS, 4))
#define FIT_HRV_STATUS_COUNT                                                     5

typedef FIT_ENUM FIT_NO_FLY_TIME_MODE;
#define FIT_NO_FLY_TIME_MODE_INVALID                                             FIT_ENUM_INVALID
#define FIT_NO_FLY_TIME_MODE_STANDARD                                            (FIT_CAST(FIT_NO_FLY_TIME_MODE, 0)) // Standard Diver Alert Network no-fly guidance
#define FIT_NO_FLY_TIME_MODE_FLAT_24_HOURS                                       (FIT_CAST(FIT_NO_FLY_TIME_MODE, 1)) // Flat 24 hour no-fly guidance
#define FIT_NO_FLY_TIME_MODE_COUNT                                               2


///////////////////////////////////////////////////////////////////////
// Message Conversion Structures
///////////////////////////////////////////////////////////////////////

typedef struct
{
   FIT_UINT8 base_type;
   FIT_UINT16 offset_in;
   FIT_UINT16 offset_local;
   FIT_UINT8 size;
   FIT_UINT8 num;
} FIT_FIELD_CONVERT;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_FIELD_CONVERT fields[95];
} FIT_MESG_CONVERT;


///////////////////////////////////////////////////////////////////////
// Messages
///////////////////////////////////////////////////////////////////////

#define FIT_MESG_SIZE       254
#define FIT_MESG_DEF_SIZE   290

// pad message

#define FIT_PAD_MESG_DEF_SIZE       5

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
} FIT_PAD_MESG_DEF;


// file_id message

#define FIT_FILE_ID_MESG_SIZE                                                   35
#define FIT_FILE_ID_MESG_DEF_SIZE                                               26
#define FIT_FILE_ID_MESG_PRODUCT_NAME_COUNT                                     20

typedef struct
{
   FIT_UINT32Z serial_number; //
   FIT_DATE_TIME time_created; // Only set for files that are can be created/erased.
   FIT_STRING product_name[FIT_FILE_ID_MESG_PRODUCT_NAME_COUNT]; // Optional free form string to indicate the devices name or model
   FIT_MANUFACTURER manufacturer; //
   FIT_UINT16 product; //
   FIT_UINT16 number; // Only set for files that are not created/erased.
   FIT_FILE type; //
} FIT_FILE_ID_MESG;

typedef FIT_UINT8 FIT_FILE_ID_FIELD_NUM;

#define FIT_FILE_ID_FIELD_NUM_SERIAL_NUMBER (FIT_CAST(FIT_FILE_ID_FIELD_NUM, 3))
#define FIT_FILE_ID_FIELD_NUM_TIME_CREATED (FIT_CAST(FIT_FILE_ID_FIELD_NUM, 4))
#define FIT_FILE_ID_FIELD_NUM_PRODUCT_NAME (FIT_CAST(FIT_FILE_ID_FIELD_NUM, 8))
#define FIT_FILE_ID_FIELD_NUM_MANUFACTURER (FIT_CAST(FIT_FILE_ID_FIELD_NUM, 1))
#define FIT_FILE_ID_FIELD_NUM_PRODUCT (FIT_CAST(FIT_FILE_ID_FIELD_NUM, 2))
#define FIT_FILE_ID_FIELD_NUM_NUMBER (FIT_CAST(FIT_FILE_ID_FIELD_NUM, 5))
#define FIT_FILE_ID_FIELD_NUM_TYPE (FIT_CAST(FIT_FILE_ID_FIELD_NUM, 0))

typedef enum
{
   FIT_FILE_ID_MESG_SERIAL_NUMBER,
   FIT_FILE_ID_MESG_TIME_CREATED,
   FIT_FILE_ID_MESG_PRODUCT_NAME,
   FIT_FILE_ID_MESG_MANUFACTURER,
   FIT_FILE_ID_MESG_PRODUCT,
   FIT_FILE_ID_MESG_NUMBER,
   FIT_FILE_ID_MESG_TYPE,
   FIT_FILE_ID_MESG_FIELDS
} FIT_FILE_ID_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_FILE_ID_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_FILE_ID_MESG_DEF;

// file_creator message

#define FIT_FILE_CREATOR_MESG_SIZE                                              3
#define FIT_FILE_CREATOR_MESG_DEF_SIZE                                          11

typedef struct
{
   FIT_UINT16 software_version; //
   FIT_UINT8 hardware_version; //
} FIT_FILE_CREATOR_MESG;

typedef FIT_UINT8 FIT_FILE_CREATOR_FIELD_NUM;

#define FIT_FILE_CREATOR_FIELD_NUM_SOFTWARE_VERSION (FIT_CAST(FIT_FILE_CREATOR_FIELD_NUM, 0))
#define FIT_FILE_CREATOR_FIELD_NUM_HARDWARE_VERSION (FIT_CAST(FIT_FILE_CREATOR_FIELD_NUM, 1))

typedef enum
{
   FIT_FILE_CREATOR_MESG_SOFTWARE_VERSION,
   FIT_FILE_CREATOR_MESG_HARDWARE_VERSION,
   FIT_FILE_CREATOR_MESG_FIELDS
} FIT_FILE_CREATOR_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_FILE_CREATOR_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_FILE_CREATOR_MESG_DEF;

// software message

#define FIT_SOFTWARE_MESG_SIZE                                                  20
#define FIT_SOFTWARE_MESG_DEF_SIZE                                              14
#define FIT_SOFTWARE_MESG_PART_NUMBER_COUNT                                     16

typedef struct
{
   FIT_STRING part_number[FIT_SOFTWARE_MESG_PART_NUMBER_COUNT]; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 version; //
} FIT_SOFTWARE_MESG;

typedef FIT_UINT8 FIT_SOFTWARE_FIELD_NUM;

#define FIT_SOFTWARE_FIELD_NUM_PART_NUMBER (FIT_CAST(FIT_SOFTWARE_FIELD_NUM, 5))
#define FIT_SOFTWARE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_SOFTWARE_FIELD_NUM, 254))
#define FIT_SOFTWARE_FIELD_NUM_VERSION (FIT_CAST(FIT_SOFTWARE_FIELD_NUM, 3))

typedef enum
{
   FIT_SOFTWARE_MESG_PART_NUMBER,
   FIT_SOFTWARE_MESG_MESSAGE_INDEX,
   FIT_SOFTWARE_MESG_VERSION,
   FIT_SOFTWARE_MESG_FIELDS
} FIT_SOFTWARE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SOFTWARE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SOFTWARE_MESG_DEF;

// slave_device message

#define FIT_SLAVE_DEVICE_MESG_SIZE                                              4
#define FIT_SLAVE_DEVICE_MESG_DEF_SIZE                                          11

typedef struct
{
   FIT_MANUFACTURER manufacturer; //
   FIT_UINT16 product; //
} FIT_SLAVE_DEVICE_MESG;

typedef FIT_UINT8 FIT_SLAVE_DEVICE_FIELD_NUM;

#define FIT_SLAVE_DEVICE_FIELD_NUM_MANUFACTURER (FIT_CAST(FIT_SLAVE_DEVICE_FIELD_NUM, 0))
#define FIT_SLAVE_DEVICE_FIELD_NUM_PRODUCT (FIT_CAST(FIT_SLAVE_DEVICE_FIELD_NUM, 1))

typedef enum
{
   FIT_SLAVE_DEVICE_MESG_MANUFACTURER,
   FIT_SLAVE_DEVICE_MESG_PRODUCT,
   FIT_SLAVE_DEVICE_MESG_FIELDS
} FIT_SLAVE_DEVICE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SLAVE_DEVICE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SLAVE_DEVICE_MESG_DEF;

// capabilities message

#define FIT_CAPABILITIES_MESG_SIZE                                              13
#define FIT_CAPABILITIES_MESG_DEF_SIZE                                          17
#define FIT_CAPABILITIES_MESG_LANGUAGES_COUNT                                   4
#define FIT_CAPABILITIES_MESG_SPORTS_COUNT                                      1

typedef struct
{
   FIT_UINT8Z languages[FIT_CAPABILITIES_MESG_LANGUAGES_COUNT]; // Use language_bits_x types where x is index of array.
   FIT_WORKOUT_CAPABILITIES workouts_supported; //
   FIT_CONNECTIVITY_CAPABILITIES connectivity_supported; //
   FIT_SPORT_BITS_0 sports[FIT_CAPABILITIES_MESG_SPORTS_COUNT]; // Use sport_bits_x types where x is index of array.
} FIT_CAPABILITIES_MESG;

typedef FIT_UINT8 FIT_CAPABILITIES_FIELD_NUM;

#define FIT_CAPABILITIES_FIELD_NUM_LANGUAGES (FIT_CAST(FIT_CAPABILITIES_FIELD_NUM, 0))
#define FIT_CAPABILITIES_FIELD_NUM_WORKOUTS_SUPPORTED (FIT_CAST(FIT_CAPABILITIES_FIELD_NUM, 21))
#define FIT_CAPABILITIES_FIELD_NUM_CONNECTIVITY_SUPPORTED (FIT_CAST(FIT_CAPABILITIES_FIELD_NUM, 23))
#define FIT_CAPABILITIES_FIELD_NUM_SPORTS (FIT_CAST(FIT_CAPABILITIES_FIELD_NUM, 1))

typedef enum
{
   FIT_CAPABILITIES_MESG_LANGUAGES,
   FIT_CAPABILITIES_MESG_WORKOUTS_SUPPORTED,
   FIT_CAPABILITIES_MESG_CONNECTIVITY_SUPPORTED,
   FIT_CAPABILITIES_MESG_SPORTS,
   FIT_CAPABILITIES_MESG_FIELDS
} FIT_CAPABILITIES_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_CAPABILITIES_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_CAPABILITIES_MESG_DEF;

// file_capabilities message

#define FIT_FILE_CAPABILITIES_MESG_SIZE                                         26
#define FIT_FILE_CAPABILITIES_MESG_DEF_SIZE                                     23
#define FIT_FILE_CAPABILITIES_MESG_DIRECTORY_COUNT                              16

typedef struct
{
   FIT_STRING directory[FIT_FILE_CAPABILITIES_MESG_DIRECTORY_COUNT]; //
   FIT_UINT32 max_size; // 1 * bytes + 0,
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 max_count; //
   FIT_FILE type; //
   FIT_FILE_FLAGS flags; //
} FIT_FILE_CAPABILITIES_MESG;

typedef FIT_UINT8 FIT_FILE_CAPABILITIES_FIELD_NUM;

#define FIT_FILE_CAPABILITIES_FIELD_NUM_DIRECTORY (FIT_CAST(FIT_FILE_CAPABILITIES_FIELD_NUM, 2))
#define FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_SIZE (FIT_CAST(FIT_FILE_CAPABILITIES_FIELD_NUM, 4))
#define FIT_FILE_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_FILE_CAPABILITIES_FIELD_NUM, 254))
#define FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_COUNT (FIT_CAST(FIT_FILE_CAPABILITIES_FIELD_NUM, 3))
#define FIT_FILE_CAPABILITIES_FIELD_NUM_TYPE (FIT_CAST(FIT_FILE_CAPABILITIES_FIELD_NUM, 0))
#define FIT_FILE_CAPABILITIES_FIELD_NUM_FLAGS (FIT_CAST(FIT_FILE_CAPABILITIES_FIELD_NUM, 1))

typedef enum
{
   FIT_FILE_CAPABILITIES_MESG_DIRECTORY,
   FIT_FILE_CAPABILITIES_MESG_MAX_SIZE,
   FIT_FILE_CAPABILITIES_MESG_MESSAGE_INDEX,
   FIT_FILE_CAPABILITIES_MESG_MAX_COUNT,
   FIT_FILE_CAPABILITIES_MESG_TYPE,
   FIT_FILE_CAPABILITIES_MESG_FLAGS,
   FIT_FILE_CAPABILITIES_MESG_FIELDS
} FIT_FILE_CAPABILITIES_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_FILE_CAPABILITIES_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_FILE_CAPABILITIES_MESG_DEF;

// mesg_capabilities message

#define FIT_MESG_CAPABILITIES_MESG_SIZE                                         8
#define FIT_MESG_CAPABILITIES_MESG_DEF_SIZE                                     20

typedef struct
{
   FIT_MESSAGE_INDEX message_index; //
   FIT_MESG_NUM mesg_num; //
   FIT_UINT16 count; //
   FIT_FILE file; //
   FIT_MESG_COUNT count_type; //
} FIT_MESG_CAPABILITIES_MESG;

typedef FIT_UINT8 FIT_MESG_CAPABILITIES_FIELD_NUM;

#define FIT_MESG_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_MESG_CAPABILITIES_FIELD_NUM, 254))
#define FIT_MESG_CAPABILITIES_FIELD_NUM_MESG_NUM (FIT_CAST(FIT_MESG_CAPABILITIES_FIELD_NUM, 1))
#define FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT (FIT_CAST(FIT_MESG_CAPABILITIES_FIELD_NUM, 3))
#define FIT_MESG_CAPABILITIES_FIELD_NUM_FILE (FIT_CAST(FIT_MESG_CAPABILITIES_FIELD_NUM, 0))
#define FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT_TYPE (FIT_CAST(FIT_MESG_CAPABILITIES_FIELD_NUM, 2))

typedef enum
{
   FIT_MESG_CAPABILITIES_MESG_MESSAGE_INDEX,
   FIT_MESG_CAPABILITIES_MESG_MESG_NUM,
   FIT_MESG_CAPABILITIES_MESG_COUNT,
   FIT_MESG_CAPABILITIES_MESG_FILE,
   FIT_MESG_CAPABILITIES_MESG_COUNT_TYPE,
   FIT_MESG_CAPABILITIES_MESG_FIELDS
} FIT_MESG_CAPABILITIES_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_MESG_CAPABILITIES_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_MESG_CAPABILITIES_MESG_DEF;

// field_capabilities message

#define FIT_FIELD_CAPABILITIES_MESG_SIZE                                        8
#define FIT_FIELD_CAPABILITIES_MESG_DEF_SIZE                                    20

typedef struct
{
   FIT_MESSAGE_INDEX message_index; //
   FIT_MESG_NUM mesg_num; //
   FIT_UINT16 count; //
   FIT_FILE file; //
   FIT_UINT8 field_num; //
} FIT_FIELD_CAPABILITIES_MESG;

typedef FIT_UINT8 FIT_FIELD_CAPABILITIES_FIELD_NUM;

#define FIT_FIELD_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_FIELD_CAPABILITIES_FIELD_NUM, 254))
#define FIT_FIELD_CAPABILITIES_FIELD_NUM_MESG_NUM (FIT_CAST(FIT_FIELD_CAPABILITIES_FIELD_NUM, 1))
#define FIT_FIELD_CAPABILITIES_FIELD_NUM_COUNT (FIT_CAST(FIT_FIELD_CAPABILITIES_FIELD_NUM, 3))
#define FIT_FIELD_CAPABILITIES_FIELD_NUM_FILE (FIT_CAST(FIT_FIELD_CAPABILITIES_FIELD_NUM, 0))
#define FIT_FIELD_CAPABILITIES_FIELD_NUM_FIELD_NUM (FIT_CAST(FIT_FIELD_CAPABILITIES_FIELD_NUM, 2))

typedef enum
{
   FIT_FIELD_CAPABILITIES_MESG_MESSAGE_INDEX,
   FIT_FIELD_CAPABILITIES_MESG_MESG_NUM,
   FIT_FIELD_CAPABILITIES_MESG_COUNT,
   FIT_FIELD_CAPABILITIES_MESG_FILE,
   FIT_FIELD_CAPABILITIES_MESG_FIELD_NUM,
   FIT_FIELD_CAPABILITIES_MESG_FIELDS
} FIT_FIELD_CAPABILITIES_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_FIELD_CAPABILITIES_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_FIELD_CAPABILITIES_MESG_DEF;

// device_settings message

#define FIT_DEVICE_SETTINGS_MESG_SIZE                                           36
#define FIT_DEVICE_SETTINGS_MESG_DEF_SIZE                                       56
#define FIT_DEVICE_SETTINGS_MESG_TIME_OFFSET_COUNT                              2
#define FIT_DEVICE_SETTINGS_MESG_PAGES_ENABLED_COUNT                            1
#define FIT_DEVICE_SETTINGS_MESG_DEFAULT_PAGE_COUNT                             1
#define FIT_DEVICE_SETTINGS_MESG_TIME_MODE_COUNT                                2
#define FIT_DEVICE_SETTINGS_MESG_TIME_ZONE_OFFSET_COUNT                         2

typedef struct
{
   FIT_UINT32 utc_offset; // Offset from system time. Required to convert timestamp from system time to UTC.
   FIT_UINT32 time_offset[FIT_DEVICE_SETTINGS_MESG_TIME_OFFSET_COUNT]; // 1 * s + 0, Offset from system time.
   FIT_DATE_TIME clock_time; // UTC timestamp used to set the devices clock and date
   FIT_UINT16 pages_enabled[FIT_DEVICE_SETTINGS_MESG_PAGES_ENABLED_COUNT]; // Bitfield to configure enabled screens for each supported loop
   FIT_UINT16 default_page[FIT_DEVICE_SETTINGS_MESG_DEFAULT_PAGE_COUNT]; // Bitfield to indicate one page as default for each supported loop
   FIT_UINT16 autosync_min_steps; // 1 * steps + 0, Minimum steps before an autosync can occur
   FIT_UINT16 autosync_min_time; // 1 * minutes + 0, Minimum minutes before an autosync can occur
   FIT_UINT8 active_time_zone; // Index into time zone arrays.
   FIT_TIME_MODE time_mode[FIT_DEVICE_SETTINGS_MESG_TIME_MODE_COUNT]; // Display mode for the time
   FIT_SINT8 time_zone_offset[FIT_DEVICE_SETTINGS_MESG_TIME_ZONE_OFFSET_COUNT]; // 4 * hr + 0, timezone offset in 1/4 hour increments
   FIT_BACKLIGHT_MODE backlight_mode; // Mode for backlight
   FIT_BOOL activity_tracker_enabled; // Enabled state of the activity tracker functionality
   FIT_BOOL move_alert_enabled; // Enabled state of the move alert
   FIT_DATE_MODE date_mode; // Display mode for the date
   FIT_DISPLAY_ORIENTATION display_orientation; //
   FIT_SIDE mounting_side; //
   FIT_TAP_SENSITIVITY tap_sensitivity; // Used to hold the tap threshold setting
} FIT_DEVICE_SETTINGS_MESG;

typedef FIT_UINT8 FIT_DEVICE_SETTINGS_FIELD_NUM;

#define FIT_DEVICE_SETTINGS_FIELD_NUM_UTC_OFFSET (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 1))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_OFFSET (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 2))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_CLOCK_TIME (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 39))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_PAGES_ENABLED (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 40))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_DEFAULT_PAGE (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 57))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_STEPS (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 58))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_TIME (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 59))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVE_TIME_ZONE (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 0))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_MODE (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 4))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_ZONE_OFFSET (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 5))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_BACKLIGHT_MODE (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 12))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVITY_TRACKER_ENABLED (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 36))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_MOVE_ALERT_ENABLED (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 46))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_DATE_MODE (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 47))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_DISPLAY_ORIENTATION (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 55))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_MOUNTING_SIDE (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 56))
#define FIT_DEVICE_SETTINGS_FIELD_NUM_TAP_SENSITIVITY (FIT_CAST(FIT_DEVICE_SETTINGS_FIELD_NUM, 174))

typedef enum
{
   FIT_DEVICE_SETTINGS_MESG_UTC_OFFSET,
   FIT_DEVICE_SETTINGS_MESG_TIME_OFFSET,
   FIT_DEVICE_SETTINGS_MESG_CLOCK_TIME,
   FIT_DEVICE_SETTINGS_MESG_PAGES_ENABLED,
   FIT_DEVICE_SETTINGS_MESG_DEFAULT_PAGE,
   FIT_DEVICE_SETTINGS_MESG_AUTOSYNC_MIN_STEPS,
   FIT_DEVICE_SETTINGS_MESG_AUTOSYNC_MIN_TIME,
   FIT_DEVICE_SETTINGS_MESG_ACTIVE_TIME_ZONE,
   FIT_DEVICE_SETTINGS_MESG_TIME_MODE,
   FIT_DEVICE_SETTINGS_MESG_TIME_ZONE_OFFSET,
   FIT_DEVICE_SETTINGS_MESG_BACKLIGHT_MODE,
   FIT_DEVICE_SETTINGS_MESG_ACTIVITY_TRACKER_ENABLED,
   FIT_DEVICE_SETTINGS_MESG_MOVE_ALERT_ENABLED,
   FIT_DEVICE_SETTINGS_MESG_DATE_MODE,
   FIT_DEVICE_SETTINGS_MESG_DISPLAY_ORIENTATION,
   FIT_DEVICE_SETTINGS_MESG_MOUNTING_SIDE,
   FIT_DEVICE_SETTINGS_MESG_TAP_SENSITIVITY,
   FIT_DEVICE_SETTINGS_MESG_FIELDS
} FIT_DEVICE_SETTINGS_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_DEVICE_SETTINGS_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_DEVICE_SETTINGS_MESG_DEF;

// user_profile message

#define FIT_USER_PROFILE_MESG_SIZE                                              50
#define FIT_USER_PROFILE_MESG_DEF_SIZE                                          80
#define FIT_USER_PROFILE_MESG_FRIENDLY_NAME_COUNT                               16
#define FIT_USER_PROFILE_MESG_GLOBAL_ID_COUNT                                   6

typedef struct
{
   FIT_STRING friendly_name[FIT_USER_PROFILE_MESG_FRIENDLY_NAME_COUNT]; // Used for Morning Report greeting
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 weight; // 10 * kg + 0,
   FIT_USER_LOCAL_ID local_id; //
   FIT_UINT16 user_running_step_length; // 1000 * m + 0, User defined running step length set to 0 for auto length
   FIT_UINT16 user_walking_step_length; // 1000 * m + 0, User defined walking step length set to 0 for auto length
   FIT_GENDER gender; //
   FIT_UINT8 age; // 1 * years + 0,
   FIT_UINT8 height; // 100 * m + 0,
   FIT_LANGUAGE language; //
   FIT_DISPLAY_MEASURE elev_setting; //
   FIT_DISPLAY_MEASURE weight_setting; //
   FIT_UINT8 resting_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 default_max_running_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 default_max_biking_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 default_max_heart_rate; // 1 * bpm + 0,
   FIT_DISPLAY_HEART hr_setting; //
   FIT_DISPLAY_MEASURE speed_setting; //
   FIT_DISPLAY_MEASURE dist_setting; //
   FIT_DISPLAY_POWER power_setting; //
   FIT_ACTIVITY_CLASS activity_class; //
   FIT_DISPLAY_POSITION position_setting; //
   FIT_DISPLAY_MEASURE temperature_setting; //
   FIT_BYTE global_id[FIT_USER_PROFILE_MESG_GLOBAL_ID_COUNT]; //
   FIT_DISPLAY_MEASURE height_setting; //
} FIT_USER_PROFILE_MESG;

typedef FIT_UINT8 FIT_USER_PROFILE_FIELD_NUM;

#define FIT_USER_PROFILE_FIELD_NUM_FRIENDLY_NAME (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 0))
#define FIT_USER_PROFILE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 254))
#define FIT_USER_PROFILE_FIELD_NUM_WEIGHT (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 4))
#define FIT_USER_PROFILE_FIELD_NUM_LOCAL_ID (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 22))
#define FIT_USER_PROFILE_FIELD_NUM_USER_RUNNING_STEP_LENGTH (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 31))
#define FIT_USER_PROFILE_FIELD_NUM_USER_WALKING_STEP_LENGTH (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 32))
#define FIT_USER_PROFILE_FIELD_NUM_GENDER (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 1))
#define FIT_USER_PROFILE_FIELD_NUM_AGE (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 2))
#define FIT_USER_PROFILE_FIELD_NUM_HEIGHT (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 3))
#define FIT_USER_PROFILE_FIELD_NUM_LANGUAGE (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 5))
#define FIT_USER_PROFILE_FIELD_NUM_ELEV_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 6))
#define FIT_USER_PROFILE_FIELD_NUM_WEIGHT_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 7))
#define FIT_USER_PROFILE_FIELD_NUM_RESTING_HEART_RATE (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 8))
#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_RUNNING_HEART_RATE (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 9))
#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_BIKING_HEART_RATE (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 10))
#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_HEART_RATE (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 11))
#define FIT_USER_PROFILE_FIELD_NUM_HR_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 12))
#define FIT_USER_PROFILE_FIELD_NUM_SPEED_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 13))
#define FIT_USER_PROFILE_FIELD_NUM_DIST_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 14))
#define FIT_USER_PROFILE_FIELD_NUM_POWER_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 16))
#define FIT_USER_PROFILE_FIELD_NUM_ACTIVITY_CLASS (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 17))
#define FIT_USER_PROFILE_FIELD_NUM_POSITION_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 18))
#define FIT_USER_PROFILE_FIELD_NUM_TEMPERATURE_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 21))
#define FIT_USER_PROFILE_FIELD_NUM_GLOBAL_ID (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 23))
#define FIT_USER_PROFILE_FIELD_NUM_HEIGHT_SETTING (FIT_CAST(FIT_USER_PROFILE_FIELD_NUM, 30))

typedef enum
{
   FIT_USER_PROFILE_MESG_FRIENDLY_NAME,
   FIT_USER_PROFILE_MESG_MESSAGE_INDEX,
   FIT_USER_PROFILE_MESG_WEIGHT,
   FIT_USER_PROFILE_MESG_LOCAL_ID,
   FIT_USER_PROFILE_MESG_USER_RUNNING_STEP_LENGTH,
   FIT_USER_PROFILE_MESG_USER_WALKING_STEP_LENGTH,
   FIT_USER_PROFILE_MESG_GENDER,
   FIT_USER_PROFILE_MESG_AGE,
   FIT_USER_PROFILE_MESG_HEIGHT,
   FIT_USER_PROFILE_MESG_LANGUAGE,
   FIT_USER_PROFILE_MESG_ELEV_SETTING,
   FIT_USER_PROFILE_MESG_WEIGHT_SETTING,
   FIT_USER_PROFILE_MESG_RESTING_HEART_RATE,
   FIT_USER_PROFILE_MESG_DEFAULT_MAX_RUNNING_HEART_RATE,
   FIT_USER_PROFILE_MESG_DEFAULT_MAX_BIKING_HEART_RATE,
   FIT_USER_PROFILE_MESG_DEFAULT_MAX_HEART_RATE,
   FIT_USER_PROFILE_MESG_HR_SETTING,
   FIT_USER_PROFILE_MESG_SPEED_SETTING,
   FIT_USER_PROFILE_MESG_DIST_SETTING,
   FIT_USER_PROFILE_MESG_POWER_SETTING,
   FIT_USER_PROFILE_MESG_ACTIVITY_CLASS,
   FIT_USER_PROFILE_MESG_POSITION_SETTING,
   FIT_USER_PROFILE_MESG_TEMPERATURE_SETTING,
   FIT_USER_PROFILE_MESG_GLOBAL_ID,
   FIT_USER_PROFILE_MESG_HEIGHT_SETTING,
   FIT_USER_PROFILE_MESG_FIELDS
} FIT_USER_PROFILE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_USER_PROFILE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_USER_PROFILE_MESG_DEF;

// hrm_profile message

#define FIT_HRM_PROFILE_MESG_SIZE                                               7
#define FIT_HRM_PROFILE_MESG_DEF_SIZE                                           20

typedef struct
{
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16Z hrm_ant_id; //
   FIT_BOOL enabled; //
   FIT_BOOL log_hrv; //
   FIT_UINT8Z hrm_ant_id_trans_type; //
} FIT_HRM_PROFILE_MESG;

typedef FIT_UINT8 FIT_HRM_PROFILE_FIELD_NUM;

#define FIT_HRM_PROFILE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_HRM_PROFILE_FIELD_NUM, 254))
#define FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID (FIT_CAST(FIT_HRM_PROFILE_FIELD_NUM, 1))
#define FIT_HRM_PROFILE_FIELD_NUM_ENABLED (FIT_CAST(FIT_HRM_PROFILE_FIELD_NUM, 0))
#define FIT_HRM_PROFILE_FIELD_NUM_LOG_HRV (FIT_CAST(FIT_HRM_PROFILE_FIELD_NUM, 2))
#define FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID_TRANS_TYPE (FIT_CAST(FIT_HRM_PROFILE_FIELD_NUM, 3))

typedef enum
{
   FIT_HRM_PROFILE_MESG_MESSAGE_INDEX,
   FIT_HRM_PROFILE_MESG_HRM_ANT_ID,
   FIT_HRM_PROFILE_MESG_ENABLED,
   FIT_HRM_PROFILE_MESG_LOG_HRV,
   FIT_HRM_PROFILE_MESG_HRM_ANT_ID_TRANS_TYPE,
   FIT_HRM_PROFILE_MESG_FIELDS
} FIT_HRM_PROFILE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_HRM_PROFILE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_HRM_PROFILE_MESG_DEF;

// sdm_profile message

#define FIT_SDM_PROFILE_MESG_SIZE                                               14
#define FIT_SDM_PROFILE_MESG_DEF_SIZE                                           29

typedef struct
{
   FIT_UINT32 odometer; // 100 * m + 0,
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16Z sdm_ant_id; //
   FIT_UINT16 sdm_cal_factor; // 10 * % + 0,
   FIT_BOOL enabled; //
   FIT_BOOL speed_source; // Use footpod for speed source instead of GPS
   FIT_UINT8Z sdm_ant_id_trans_type; //
   FIT_UINT8 odometer_rollover; // Rollover counter that can be used to extend the odometer
} FIT_SDM_PROFILE_MESG;

typedef FIT_UINT8 FIT_SDM_PROFILE_FIELD_NUM;

#define FIT_SDM_PROFILE_FIELD_NUM_ODOMETER (FIT_CAST(FIT_SDM_PROFILE_FIELD_NUM, 3))
#define FIT_SDM_PROFILE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_SDM_PROFILE_FIELD_NUM, 254))
#define FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID (FIT_CAST(FIT_SDM_PROFILE_FIELD_NUM, 1))
#define FIT_SDM_PROFILE_FIELD_NUM_SDM_CAL_FACTOR (FIT_CAST(FIT_SDM_PROFILE_FIELD_NUM, 2))
#define FIT_SDM_PROFILE_FIELD_NUM_ENABLED (FIT_CAST(FIT_SDM_PROFILE_FIELD_NUM, 0))
#define FIT_SDM_PROFILE_FIELD_NUM_SPEED_SOURCE (FIT_CAST(FIT_SDM_PROFILE_FIELD_NUM, 4))
#define FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID_TRANS_TYPE (FIT_CAST(FIT_SDM_PROFILE_FIELD_NUM, 5))
#define FIT_SDM_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER (FIT_CAST(FIT_SDM_PROFILE_FIELD_NUM, 7))

typedef enum
{
   FIT_SDM_PROFILE_MESG_ODOMETER,
   FIT_SDM_PROFILE_MESG_MESSAGE_INDEX,
   FIT_SDM_PROFILE_MESG_SDM_ANT_ID,
   FIT_SDM_PROFILE_MESG_SDM_CAL_FACTOR,
   FIT_SDM_PROFILE_MESG_ENABLED,
   FIT_SDM_PROFILE_MESG_SPEED_SOURCE,
   FIT_SDM_PROFILE_MESG_SDM_ANT_ID_TRANS_TYPE,
   FIT_SDM_PROFILE_MESG_ODOMETER_ROLLOVER,
   FIT_SDM_PROFILE_MESG_FIELDS
} FIT_SDM_PROFILE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SDM_PROFILE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SDM_PROFILE_MESG_DEF;

// bike_profile message

#define FIT_BIKE_PROFILE_MESG_SIZE                                              59
#define FIT_BIKE_PROFILE_MESG_DEF_SIZE                                          101
#define FIT_BIKE_PROFILE_MESG_NAME_COUNT                                        16
#define FIT_BIKE_PROFILE_MESG_FRONT_GEAR_COUNT                                  1
#define FIT_BIKE_PROFILE_MESG_REAR_GEAR_COUNT                                   1

typedef struct
{
   FIT_STRING name[FIT_BIKE_PROFILE_MESG_NAME_COUNT]; //
   FIT_UINT32 odometer; // 100 * m + 0,
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16Z bike_spd_ant_id; //
   FIT_UINT16Z bike_cad_ant_id; //
   FIT_UINT16Z bike_spdcad_ant_id; //
   FIT_UINT16Z bike_power_ant_id; //
   FIT_UINT16 custom_wheelsize; // 1000 * m + 0,
   FIT_UINT16 auto_wheelsize; // 1000 * m + 0,
   FIT_UINT16 bike_weight; // 10 * kg + 0,
   FIT_UINT16 power_cal_factor; // 10 * % + 0,
   FIT_SPORT sport; //
   FIT_SUB_SPORT sub_sport; //
   FIT_BOOL auto_wheel_cal; //
   FIT_BOOL auto_power_zero; //
   FIT_UINT8 id; //
   FIT_BOOL spd_enabled; //
   FIT_BOOL cad_enabled; //
   FIT_BOOL spdcad_enabled; //
   FIT_BOOL power_enabled; //
   FIT_UINT8 crank_length; // 2 * mm + -110,
   FIT_BOOL enabled; //
   FIT_UINT8Z bike_spd_ant_id_trans_type; //
   FIT_UINT8Z bike_cad_ant_id_trans_type; //
   FIT_UINT8Z bike_spdcad_ant_id_trans_type; //
   FIT_UINT8Z bike_power_ant_id_trans_type; //
   FIT_UINT8 odometer_rollover; // Rollover counter that can be used to extend the odometer
   FIT_UINT8Z front_gear_num; // Number of front gears
   FIT_UINT8Z front_gear[FIT_BIKE_PROFILE_MESG_FRONT_GEAR_COUNT]; // Number of teeth on each gear 0 is innermost
   FIT_UINT8Z rear_gear_num; // Number of rear gears
   FIT_UINT8Z rear_gear[FIT_BIKE_PROFILE_MESG_REAR_GEAR_COUNT]; // Number of teeth on each gear 0 is innermost
   FIT_BOOL shimano_di2_enabled; //
} FIT_BIKE_PROFILE_MESG;

typedef FIT_UINT8 FIT_BIKE_PROFILE_FIELD_NUM;

#define FIT_BIKE_PROFILE_FIELD_NUM_NAME (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 0))
#define FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 3))
#define FIT_BIKE_PROFILE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 254))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 4))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 5))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 6))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 7))
#define FIT_BIKE_PROFILE_FIELD_NUM_CUSTOM_WHEELSIZE (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 8))
#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEELSIZE (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 9))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_WEIGHT (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 10))
#define FIT_BIKE_PROFILE_FIELD_NUM_POWER_CAL_FACTOR (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 11))
#define FIT_BIKE_PROFILE_FIELD_NUM_SPORT (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 1))
#define FIT_BIKE_PROFILE_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 2))
#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEEL_CAL (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 12))
#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_POWER_ZERO (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 13))
#define FIT_BIKE_PROFILE_FIELD_NUM_ID (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 14))
#define FIT_BIKE_PROFILE_FIELD_NUM_SPD_ENABLED (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 15))
#define FIT_BIKE_PROFILE_FIELD_NUM_CAD_ENABLED (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 16))
#define FIT_BIKE_PROFILE_FIELD_NUM_SPDCAD_ENABLED (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 17))
#define FIT_BIKE_PROFILE_FIELD_NUM_POWER_ENABLED (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 18))
#define FIT_BIKE_PROFILE_FIELD_NUM_CRANK_LENGTH (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 19))
#define FIT_BIKE_PROFILE_FIELD_NUM_ENABLED (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 20))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID_TRANS_TYPE (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 21))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID_TRANS_TYPE (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 22))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID_TRANS_TYPE (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 23))
#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID_TRANS_TYPE (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 24))
#define FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 37))
#define FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR_NUM (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 38))
#define FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 39))
#define FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR_NUM (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 40))
#define FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 41))
#define FIT_BIKE_PROFILE_FIELD_NUM_SHIMANO_DI2_ENABLED (FIT_CAST(FIT_BIKE_PROFILE_FIELD_NUM, 44))

typedef enum
{
   FIT_BIKE_PROFILE_MESG_NAME,
   FIT_BIKE_PROFILE_MESG_ODOMETER,
   FIT_BIKE_PROFILE_MESG_MESSAGE_INDEX,
   FIT_BIKE_PROFILE_MESG_BIKE_SPD_ANT_ID,
   FIT_BIKE_PROFILE_MESG_BIKE_CAD_ANT_ID,
   FIT_BIKE_PROFILE_MESG_BIKE_SPDCAD_ANT_ID,
   FIT_BIKE_PROFILE_MESG_BIKE_POWER_ANT_ID,
   FIT_BIKE_PROFILE_MESG_CUSTOM_WHEELSIZE,
   FIT_BIKE_PROFILE_MESG_AUTO_WHEELSIZE,
   FIT_BIKE_PROFILE_MESG_BIKE_WEIGHT,
   FIT_BIKE_PROFILE_MESG_POWER_CAL_FACTOR,
   FIT_BIKE_PROFILE_MESG_SPORT,
   FIT_BIKE_PROFILE_MESG_SUB_SPORT,
   FIT_BIKE_PROFILE_MESG_AUTO_WHEEL_CAL,
   FIT_BIKE_PROFILE_MESG_AUTO_POWER_ZERO,
   FIT_BIKE_PROFILE_MESG_ID,
   FIT_BIKE_PROFILE_MESG_SPD_ENABLED,
   FIT_BIKE_PROFILE_MESG_CAD_ENABLED,
   FIT_BIKE_PROFILE_MESG_SPDCAD_ENABLED,
   FIT_BIKE_PROFILE_MESG_POWER_ENABLED,
   FIT_BIKE_PROFILE_MESG_CRANK_LENGTH,
   FIT_BIKE_PROFILE_MESG_ENABLED,
   FIT_BIKE_PROFILE_MESG_BIKE_SPD_ANT_ID_TRANS_TYPE,
   FIT_BIKE_PROFILE_MESG_BIKE_CAD_ANT_ID_TRANS_TYPE,
   FIT_BIKE_PROFILE_MESG_BIKE_SPDCAD_ANT_ID_TRANS_TYPE,
   FIT_BIKE_PROFILE_MESG_BIKE_POWER_ANT_ID_TRANS_TYPE,
   FIT_BIKE_PROFILE_MESG_ODOMETER_ROLLOVER,
   FIT_BIKE_PROFILE_MESG_FRONT_GEAR_NUM,
   FIT_BIKE_PROFILE_MESG_FRONT_GEAR,
   FIT_BIKE_PROFILE_MESG_REAR_GEAR_NUM,
   FIT_BIKE_PROFILE_MESG_REAR_GEAR,
   FIT_BIKE_PROFILE_MESG_SHIMANO_DI2_ENABLED,
   FIT_BIKE_PROFILE_MESG_FIELDS
} FIT_BIKE_PROFILE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_BIKE_PROFILE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_BIKE_PROFILE_MESG_DEF;

// connectivity message

#define FIT_CONNECTIVITY_MESG_SIZE                                              36
#define FIT_CONNECTIVITY_MESG_DEF_SIZE                                          44
#define FIT_CONNECTIVITY_MESG_NAME_COUNT                                        24

typedef struct
{
   FIT_STRING name[FIT_CONNECTIVITY_MESG_NAME_COUNT]; //
   FIT_BOOL bluetooth_enabled; // Use Bluetooth for connectivity features
   FIT_BOOL bluetooth_le_enabled; // Use Bluetooth Low Energy for connectivity features
   FIT_BOOL ant_enabled; // Use ANT for connectivity features
   FIT_BOOL live_tracking_enabled; //
   FIT_BOOL weather_conditions_enabled; //
   FIT_BOOL weather_alerts_enabled; //
   FIT_BOOL auto_activity_upload_enabled; //
   FIT_BOOL course_download_enabled; //
   FIT_BOOL workout_download_enabled; //
   FIT_BOOL gps_ephemeris_download_enabled; //
   FIT_BOOL incident_detection_enabled; //
   FIT_BOOL grouptrack_enabled; //
} FIT_CONNECTIVITY_MESG;

typedef FIT_UINT8 FIT_CONNECTIVITY_FIELD_NUM;

#define FIT_CONNECTIVITY_FIELD_NUM_NAME (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 3))
#define FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 0))
#define FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_LE_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 1))
#define FIT_CONNECTIVITY_FIELD_NUM_ANT_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 2))
#define FIT_CONNECTIVITY_FIELD_NUM_LIVE_TRACKING_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 4))
#define FIT_CONNECTIVITY_FIELD_NUM_WEATHER_CONDITIONS_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 5))
#define FIT_CONNECTIVITY_FIELD_NUM_WEATHER_ALERTS_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 6))
#define FIT_CONNECTIVITY_FIELD_NUM_AUTO_ACTIVITY_UPLOAD_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 7))
#define FIT_CONNECTIVITY_FIELD_NUM_COURSE_DOWNLOAD_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 8))
#define FIT_CONNECTIVITY_FIELD_NUM_WORKOUT_DOWNLOAD_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 9))
#define FIT_CONNECTIVITY_FIELD_NUM_GPS_EPHEMERIS_DOWNLOAD_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 10))
#define FIT_CONNECTIVITY_FIELD_NUM_INCIDENT_DETECTION_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 11))
#define FIT_CONNECTIVITY_FIELD_NUM_GROUPTRACK_ENABLED (FIT_CAST(FIT_CONNECTIVITY_FIELD_NUM, 12))

typedef enum
{
   FIT_CONNECTIVITY_MESG_NAME,
   FIT_CONNECTIVITY_MESG_BLUETOOTH_ENABLED,
   FIT_CONNECTIVITY_MESG_BLUETOOTH_LE_ENABLED,
   FIT_CONNECTIVITY_MESG_ANT_ENABLED,
   FIT_CONNECTIVITY_MESG_LIVE_TRACKING_ENABLED,
   FIT_CONNECTIVITY_MESG_WEATHER_CONDITIONS_ENABLED,
   FIT_CONNECTIVITY_MESG_WEATHER_ALERTS_ENABLED,
   FIT_CONNECTIVITY_MESG_AUTO_ACTIVITY_UPLOAD_ENABLED,
   FIT_CONNECTIVITY_MESG_COURSE_DOWNLOAD_ENABLED,
   FIT_CONNECTIVITY_MESG_WORKOUT_DOWNLOAD_ENABLED,
   FIT_CONNECTIVITY_MESG_GPS_EPHEMERIS_DOWNLOAD_ENABLED,
   FIT_CONNECTIVITY_MESG_INCIDENT_DETECTION_ENABLED,
   FIT_CONNECTIVITY_MESG_GROUPTRACK_ENABLED,
   FIT_CONNECTIVITY_MESG_FIELDS
} FIT_CONNECTIVITY_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_CONNECTIVITY_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_CONNECTIVITY_MESG_DEF;

// zones_target message

#define FIT_ZONES_TARGET_MESG_SIZE                                              6
#define FIT_ZONES_TARGET_MESG_DEF_SIZE                                          20

typedef struct
{
   FIT_UINT16 functional_threshold_power; //
   FIT_UINT8 max_heart_rate; //
   FIT_UINT8 threshold_heart_rate; //
   FIT_HR_ZONE_CALC hr_calc_type; //
   FIT_PWR_ZONE_CALC pwr_calc_type; //
} FIT_ZONES_TARGET_MESG;

typedef FIT_UINT8 FIT_ZONES_TARGET_FIELD_NUM;

#define FIT_ZONES_TARGET_FIELD_NUM_FUNCTIONAL_THRESHOLD_POWER (FIT_CAST(FIT_ZONES_TARGET_FIELD_NUM, 3))
#define FIT_ZONES_TARGET_FIELD_NUM_MAX_HEART_RATE (FIT_CAST(FIT_ZONES_TARGET_FIELD_NUM, 1))
#define FIT_ZONES_TARGET_FIELD_NUM_THRESHOLD_HEART_RATE (FIT_CAST(FIT_ZONES_TARGET_FIELD_NUM, 2))
#define FIT_ZONES_TARGET_FIELD_NUM_HR_CALC_TYPE (FIT_CAST(FIT_ZONES_TARGET_FIELD_NUM, 5))
#define FIT_ZONES_TARGET_FIELD_NUM_PWR_CALC_TYPE (FIT_CAST(FIT_ZONES_TARGET_FIELD_NUM, 7))

typedef enum
{
   FIT_ZONES_TARGET_MESG_FUNCTIONAL_THRESHOLD_POWER,
   FIT_ZONES_TARGET_MESG_MAX_HEART_RATE,
   FIT_ZONES_TARGET_MESG_THRESHOLD_HEART_RATE,
   FIT_ZONES_TARGET_MESG_HR_CALC_TYPE,
   FIT_ZONES_TARGET_MESG_PWR_CALC_TYPE,
   FIT_ZONES_TARGET_MESG_FIELDS
} FIT_ZONES_TARGET_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_ZONES_TARGET_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_ZONES_TARGET_MESG_DEF;

// sport message

#define FIT_SPORT_MESG_SIZE                                                     18
#define FIT_SPORT_MESG_DEF_SIZE                                                 14
#define FIT_SPORT_MESG_NAME_COUNT                                               16

typedef struct
{
   FIT_STRING name[FIT_SPORT_MESG_NAME_COUNT]; //
   FIT_SPORT sport; //
   FIT_SUB_SPORT sub_sport; //
} FIT_SPORT_MESG;

typedef FIT_UINT8 FIT_SPORT_FIELD_NUM;

#define FIT_SPORT_FIELD_NUM_NAME (FIT_CAST(FIT_SPORT_FIELD_NUM, 3))
#define FIT_SPORT_FIELD_NUM_SPORT (FIT_CAST(FIT_SPORT_FIELD_NUM, 0))
#define FIT_SPORT_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_SPORT_FIELD_NUM, 1))

typedef enum
{
   FIT_SPORT_MESG_NAME,
   FIT_SPORT_MESG_SPORT,
   FIT_SPORT_MESG_SUB_SPORT,
   FIT_SPORT_MESG_FIELDS
} FIT_SPORT_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SPORT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SPORT_MESG_DEF;

// hr_zone message

#define FIT_HR_ZONE_MESG_SIZE                                                   19
#define FIT_HR_ZONE_MESG_DEF_SIZE                                               14
#define FIT_HR_ZONE_MESG_NAME_COUNT                                             16

typedef struct
{
   FIT_STRING name[FIT_HR_ZONE_MESG_NAME_COUNT]; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT8 high_bpm; // 1 * bpm + 0,
} FIT_HR_ZONE_MESG;

typedef FIT_UINT8 FIT_HR_ZONE_FIELD_NUM;

#define FIT_HR_ZONE_FIELD_NUM_NAME (FIT_CAST(FIT_HR_ZONE_FIELD_NUM, 2))
#define FIT_HR_ZONE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_HR_ZONE_FIELD_NUM, 254))
#define FIT_HR_ZONE_FIELD_NUM_HIGH_BPM (FIT_CAST(FIT_HR_ZONE_FIELD_NUM, 1))

typedef enum
{
   FIT_HR_ZONE_MESG_NAME,
   FIT_HR_ZONE_MESG_MESSAGE_INDEX,
   FIT_HR_ZONE_MESG_HIGH_BPM,
   FIT_HR_ZONE_MESG_FIELDS
} FIT_HR_ZONE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_HR_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_HR_ZONE_MESG_DEF;

// speed_zone message

#define FIT_SPEED_ZONE_MESG_SIZE                                                20
#define FIT_SPEED_ZONE_MESG_DEF_SIZE                                            14
#define FIT_SPEED_ZONE_MESG_NAME_COUNT                                          16

typedef struct
{
   FIT_STRING name[FIT_SPEED_ZONE_MESG_NAME_COUNT]; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 high_value; // 1000 * m/s + 0,
} FIT_SPEED_ZONE_MESG;

typedef FIT_UINT8 FIT_SPEED_ZONE_FIELD_NUM;

#define FIT_SPEED_ZONE_FIELD_NUM_NAME (FIT_CAST(FIT_SPEED_ZONE_FIELD_NUM, 1))
#define FIT_SPEED_ZONE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_SPEED_ZONE_FIELD_NUM, 254))
#define FIT_SPEED_ZONE_FIELD_NUM_HIGH_VALUE (FIT_CAST(FIT_SPEED_ZONE_FIELD_NUM, 0))

typedef enum
{
   FIT_SPEED_ZONE_MESG_NAME,
   FIT_SPEED_ZONE_MESG_MESSAGE_INDEX,
   FIT_SPEED_ZONE_MESG_HIGH_VALUE,
   FIT_SPEED_ZONE_MESG_FIELDS
} FIT_SPEED_ZONE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SPEED_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SPEED_ZONE_MESG_DEF;

// cadence_zone message

#define FIT_CADENCE_ZONE_MESG_SIZE                                              19
#define FIT_CADENCE_ZONE_MESG_DEF_SIZE                                          14
#define FIT_CADENCE_ZONE_MESG_NAME_COUNT                                        16

typedef struct
{
   FIT_STRING name[FIT_CADENCE_ZONE_MESG_NAME_COUNT]; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT8 high_value; // 1 * rpm + 0,
} FIT_CADENCE_ZONE_MESG;

typedef FIT_UINT8 FIT_CADENCE_ZONE_FIELD_NUM;

#define FIT_CADENCE_ZONE_FIELD_NUM_NAME (FIT_CAST(FIT_CADENCE_ZONE_FIELD_NUM, 1))
#define FIT_CADENCE_ZONE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_CADENCE_ZONE_FIELD_NUM, 254))
#define FIT_CADENCE_ZONE_FIELD_NUM_HIGH_VALUE (FIT_CAST(FIT_CADENCE_ZONE_FIELD_NUM, 0))

typedef enum
{
   FIT_CADENCE_ZONE_MESG_NAME,
   FIT_CADENCE_ZONE_MESG_MESSAGE_INDEX,
   FIT_CADENCE_ZONE_MESG_HIGH_VALUE,
   FIT_CADENCE_ZONE_MESG_FIELDS
} FIT_CADENCE_ZONE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_CADENCE_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_CADENCE_ZONE_MESG_DEF;

// power_zone message

#define FIT_POWER_ZONE_MESG_SIZE                                                20
#define FIT_POWER_ZONE_MESG_DEF_SIZE                                            14
#define FIT_POWER_ZONE_MESG_NAME_COUNT                                          16

typedef struct
{
   FIT_STRING name[FIT_POWER_ZONE_MESG_NAME_COUNT]; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 high_value; // 1 * watts + 0,
} FIT_POWER_ZONE_MESG;

typedef FIT_UINT8 FIT_POWER_ZONE_FIELD_NUM;

#define FIT_POWER_ZONE_FIELD_NUM_NAME (FIT_CAST(FIT_POWER_ZONE_FIELD_NUM, 2))
#define FIT_POWER_ZONE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_POWER_ZONE_FIELD_NUM, 254))
#define FIT_POWER_ZONE_FIELD_NUM_HIGH_VALUE (FIT_CAST(FIT_POWER_ZONE_FIELD_NUM, 1))

typedef enum
{
   FIT_POWER_ZONE_MESG_NAME,
   FIT_POWER_ZONE_MESG_MESSAGE_INDEX,
   FIT_POWER_ZONE_MESG_HIGH_VALUE,
   FIT_POWER_ZONE_MESG_FIELDS
} FIT_POWER_ZONE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_POWER_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_POWER_ZONE_MESG_DEF;

// met_zone message

#define FIT_MET_ZONE_MESG_SIZE                                                  6
#define FIT_MET_ZONE_MESG_DEF_SIZE                                              17

typedef struct
{
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 calories; // 10 * kcal / min + 0,
   FIT_UINT8 high_bpm; //
   FIT_UINT8 fat_calories; // 10 * kcal / min + 0,
} FIT_MET_ZONE_MESG;

typedef FIT_UINT8 FIT_MET_ZONE_FIELD_NUM;

#define FIT_MET_ZONE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_MET_ZONE_FIELD_NUM, 254))
#define FIT_MET_ZONE_FIELD_NUM_CALORIES (FIT_CAST(FIT_MET_ZONE_FIELD_NUM, 2))
#define FIT_MET_ZONE_FIELD_NUM_HIGH_BPM (FIT_CAST(FIT_MET_ZONE_FIELD_NUM, 1))
#define FIT_MET_ZONE_FIELD_NUM_FAT_CALORIES (FIT_CAST(FIT_MET_ZONE_FIELD_NUM, 3))

typedef enum
{
   FIT_MET_ZONE_MESG_MESSAGE_INDEX,
   FIT_MET_ZONE_MESG_CALORIES,
   FIT_MET_ZONE_MESG_HIGH_BPM,
   FIT_MET_ZONE_MESG_FAT_CALORIES,
   FIT_MET_ZONE_MESG_FIELDS
} FIT_MET_ZONE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_MET_ZONE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_MET_ZONE_MESG_DEF;

// training_settings message

#define FIT_TRAINING_SETTINGS_MESG_SIZE                                         10
#define FIT_TRAINING_SETTINGS_MESG_DEF_SIZE                                     14

typedef struct
{
   FIT_UINT32 target_distance; // 100 * m + 0,
   FIT_UINT32 target_time; // 1 * s + 0,
   FIT_UINT16 target_speed; // 1000 * m/s + 0,
} FIT_TRAINING_SETTINGS_MESG;

typedef FIT_UINT8 FIT_TRAINING_SETTINGS_FIELD_NUM;

#define FIT_TRAINING_SETTINGS_FIELD_NUM_TARGET_DISTANCE (FIT_CAST(FIT_TRAINING_SETTINGS_FIELD_NUM, 31))
#define FIT_TRAINING_SETTINGS_FIELD_NUM_TARGET_TIME (FIT_CAST(FIT_TRAINING_SETTINGS_FIELD_NUM, 33))
#define FIT_TRAINING_SETTINGS_FIELD_NUM_TARGET_SPEED (FIT_CAST(FIT_TRAINING_SETTINGS_FIELD_NUM, 32))

typedef enum
{
   FIT_TRAINING_SETTINGS_MESG_TARGET_DISTANCE,
   FIT_TRAINING_SETTINGS_MESG_TARGET_TIME,
   FIT_TRAINING_SETTINGS_MESG_TARGET_SPEED,
   FIT_TRAINING_SETTINGS_MESG_FIELDS
} FIT_TRAINING_SETTINGS_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_TRAINING_SETTINGS_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_TRAINING_SETTINGS_MESG_DEF;

// dive_settings message

#define FIT_DIVE_SETTINGS_MESG_SIZE                                             17
#define FIT_DIVE_SETTINGS_MESG_DEF_SIZE                                         11
#define FIT_DIVE_SETTINGS_MESG_NAME_COUNT                                       16

typedef struct
{
   FIT_STRING name[FIT_DIVE_SETTINGS_MESG_NAME_COUNT]; //
   FIT_UINT8 heart_rate_source; //
} FIT_DIVE_SETTINGS_MESG;

typedef FIT_UINT8 FIT_DIVE_SETTINGS_FIELD_NUM;

#define FIT_DIVE_SETTINGS_FIELD_NUM_NAME (FIT_CAST(FIT_DIVE_SETTINGS_FIELD_NUM, 0))
#define FIT_DIVE_SETTINGS_FIELD_NUM_HEART_RATE_SOURCE (FIT_CAST(FIT_DIVE_SETTINGS_FIELD_NUM, 20))

typedef enum
{
   FIT_DIVE_SETTINGS_MESG_NAME,
   FIT_DIVE_SETTINGS_MESG_HEART_RATE_SOURCE,
   FIT_DIVE_SETTINGS_MESG_FIELDS
} FIT_DIVE_SETTINGS_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_DIVE_SETTINGS_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_DIVE_SETTINGS_MESG_DEF;

// goal message

#define FIT_GOAL_MESG_SIZE                                                      27
#define FIT_GOAL_MESG_DEF_SIZE                                                  44

typedef struct
{
   FIT_DATE_TIME start_date; //
   FIT_DATE_TIME end_date; //
   FIT_UINT32 value; //
   FIT_UINT32 target_value; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 recurrence_value; //
   FIT_SPORT sport; //
   FIT_SUB_SPORT sub_sport; //
   FIT_GOAL type; //
   FIT_BOOL repeat; //
   FIT_GOAL_RECURRENCE recurrence; //
   FIT_BOOL enabled; //
   FIT_GOAL_SOURCE source; //
} FIT_GOAL_MESG;

typedef FIT_UINT8 FIT_GOAL_FIELD_NUM;

#define FIT_GOAL_FIELD_NUM_START_DATE (FIT_CAST(FIT_GOAL_FIELD_NUM, 2))
#define FIT_GOAL_FIELD_NUM_END_DATE (FIT_CAST(FIT_GOAL_FIELD_NUM, 3))
#define FIT_GOAL_FIELD_NUM_VALUE (FIT_CAST(FIT_GOAL_FIELD_NUM, 5))
#define FIT_GOAL_FIELD_NUM_TARGET_VALUE (FIT_CAST(FIT_GOAL_FIELD_NUM, 7))
#define FIT_GOAL_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_GOAL_FIELD_NUM, 254))
#define FIT_GOAL_FIELD_NUM_RECURRENCE_VALUE (FIT_CAST(FIT_GOAL_FIELD_NUM, 9))
#define FIT_GOAL_FIELD_NUM_SPORT (FIT_CAST(FIT_GOAL_FIELD_NUM, 0))
#define FIT_GOAL_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_GOAL_FIELD_NUM, 1))
#define FIT_GOAL_FIELD_NUM_TYPE (FIT_CAST(FIT_GOAL_FIELD_NUM, 4))
#define FIT_GOAL_FIELD_NUM_REPEAT (FIT_CAST(FIT_GOAL_FIELD_NUM, 6))
#define FIT_GOAL_FIELD_NUM_RECURRENCE (FIT_CAST(FIT_GOAL_FIELD_NUM, 8))
#define FIT_GOAL_FIELD_NUM_ENABLED (FIT_CAST(FIT_GOAL_FIELD_NUM, 10))
#define FIT_GOAL_FIELD_NUM_SOURCE (FIT_CAST(FIT_GOAL_FIELD_NUM, 11))

typedef enum
{
   FIT_GOAL_MESG_START_DATE,
   FIT_GOAL_MESG_END_DATE,
   FIT_GOAL_MESG_VALUE,
   FIT_GOAL_MESG_TARGET_VALUE,
   FIT_GOAL_MESG_MESSAGE_INDEX,
   FIT_GOAL_MESG_RECURRENCE_VALUE,
   FIT_GOAL_MESG_SPORT,
   FIT_GOAL_MESG_SUB_SPORT,
   FIT_GOAL_MESG_TYPE,
   FIT_GOAL_MESG_REPEAT,
   FIT_GOAL_MESG_RECURRENCE,
   FIT_GOAL_MESG_ENABLED,
   FIT_GOAL_MESG_SOURCE,
   FIT_GOAL_MESG_FIELDS
} FIT_GOAL_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_GOAL_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_GOAL_MESG_DEF;

// activity message

#define FIT_ACTIVITY_MESG_SIZE                                                  18
#define FIT_ACTIVITY_MESG_DEF_SIZE                                              29

typedef struct
{
   FIT_DATE_TIME timestamp; //
   FIT_UINT32 total_timer_time; // 1000 * s + 0, Exclude pauses
   FIT_LOCAL_DATE_TIME local_timestamp; // timestamp epoch expressed in local time, used to convert activity timestamps to local time
   FIT_UINT16 num_sessions; //
   FIT_ACTIVITY type; //
   FIT_EVENT event; //
   FIT_EVENT_TYPE event_type; //
   FIT_UINT8 event_group; //
} FIT_ACTIVITY_MESG;

typedef FIT_UINT8 FIT_ACTIVITY_FIELD_NUM;

#define FIT_ACTIVITY_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_ACTIVITY_FIELD_NUM, 253))
#define FIT_ACTIVITY_FIELD_NUM_TOTAL_TIMER_TIME (FIT_CAST(FIT_ACTIVITY_FIELD_NUM, 0))
#define FIT_ACTIVITY_FIELD_NUM_LOCAL_TIMESTAMP (FIT_CAST(FIT_ACTIVITY_FIELD_NUM, 5))
#define FIT_ACTIVITY_FIELD_NUM_NUM_SESSIONS (FIT_CAST(FIT_ACTIVITY_FIELD_NUM, 1))
#define FIT_ACTIVITY_FIELD_NUM_TYPE (FIT_CAST(FIT_ACTIVITY_FIELD_NUM, 2))
#define FIT_ACTIVITY_FIELD_NUM_EVENT (FIT_CAST(FIT_ACTIVITY_FIELD_NUM, 3))
#define FIT_ACTIVITY_FIELD_NUM_EVENT_TYPE (FIT_CAST(FIT_ACTIVITY_FIELD_NUM, 4))
#define FIT_ACTIVITY_FIELD_NUM_EVENT_GROUP (FIT_CAST(FIT_ACTIVITY_FIELD_NUM, 6))

typedef enum
{
   FIT_ACTIVITY_MESG_TIMESTAMP,
   FIT_ACTIVITY_MESG_TOTAL_TIMER_TIME,
   FIT_ACTIVITY_MESG_LOCAL_TIMESTAMP,
   FIT_ACTIVITY_MESG_NUM_SESSIONS,
   FIT_ACTIVITY_MESG_TYPE,
   FIT_ACTIVITY_MESG_EVENT,
   FIT_ACTIVITY_MESG_EVENT_TYPE,
   FIT_ACTIVITY_MESG_EVENT_GROUP,
   FIT_ACTIVITY_MESG_FIELDS
} FIT_ACTIVITY_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_ACTIVITY_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_ACTIVITY_MESG_DEF;

// session message

#define FIT_SESSION_MESG_SIZE                                                   234
#define FIT_SESSION_MESG_DEF_SIZE                                               290
#define FIT_SESSION_MESG_TIME_IN_HR_ZONE_COUNT                                  1
#define FIT_SESSION_MESG_TIME_IN_SPEED_ZONE_COUNT                               1
#define FIT_SESSION_MESG_TIME_IN_CADENCE_ZONE_COUNT                             1
#define FIT_SESSION_MESG_TIME_IN_POWER_ZONE_COUNT                               1
#define FIT_SESSION_MESG_SPORT_PROFILE_NAME_COUNT                               16
#define FIT_SESSION_MESG_STROKE_COUNT_COUNT                                     1
#define FIT_SESSION_MESG_ZONE_COUNT_COUNT                                       1
#define FIT_SESSION_MESG_OPPONENT_NAME_COUNT                                    1

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0, Sesson end time.
   FIT_DATE_TIME start_time; //
   FIT_SINT32 start_position_lat; // 1 * semicircles + 0,
   FIT_SINT32 start_position_long; // 1 * semicircles + 0,
   FIT_UINT32 total_elapsed_time; // 1000 * s + 0, Time (includes pauses)
   FIT_UINT32 total_timer_time; // 1000 * s + 0, Timer Time (excludes pauses)
   FIT_UINT32 total_distance; // 100 * m + 0,
   FIT_UINT32 total_cycles; // 1 * cycles + 0,
   FIT_SINT32 nec_lat; // 1 * semicircles + 0, North east corner latitude
   FIT_SINT32 nec_long; // 1 * semicircles + 0, North east corner longitude
   FIT_SINT32 swc_lat; // 1 * semicircles + 0, South west corner latitude
   FIT_SINT32 swc_long; // 1 * semicircles + 0, South west corner longitude
   FIT_SINT32 end_position_lat; // 1 * semicircles + 0,
   FIT_SINT32 end_position_long; // 1 * semicircles + 0,
   FIT_UINT32 avg_stroke_count; // 10 * strokes/lap + 0,
   FIT_UINT32 total_work; // 1 * J + 0,
   FIT_UINT32 total_moving_time; // 1000 * s + 0,
   FIT_UINT32 time_in_hr_zone[FIT_SESSION_MESG_TIME_IN_HR_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_speed_zone[FIT_SESSION_MESG_TIME_IN_SPEED_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_cadence_zone[FIT_SESSION_MESG_TIME_IN_CADENCE_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_power_zone[FIT_SESSION_MESG_TIME_IN_POWER_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 avg_lap_time; // 1000 * s + 0,
   FIT_STRING sport_profile_name[FIT_SESSION_MESG_SPORT_PROFILE_NAME_COUNT]; // Sport name from associated sport mesg
   FIT_UINT32 enhanced_avg_speed; // 1000 * m/s + 0, total_distance / total_timer_time
   FIT_UINT32 enhanced_max_speed; // 1000 * m/s + 0,
   FIT_UINT32 enhanced_avg_altitude; // 5 * m + 500,
   FIT_UINT32 enhanced_min_altitude; // 5 * m + 500,
   FIT_UINT32 enhanced_max_altitude; // 5 * m + 500,
   FIT_MESSAGE_INDEX message_index; // Selected bit is set for the current session.
   FIT_UINT16 total_calories; // 1 * kcal + 0,
   FIT_UINT16 total_fat_calories; // 1 * kcal + 0,
   FIT_UINT16 avg_speed; // 1000 * m/s + 0, total_distance / total_timer_time
   FIT_UINT16 max_speed; // 1000 * m/s + 0,
   FIT_UINT16 avg_power; // 1 * watts + 0, total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time
   FIT_UINT16 max_power; // 1 * watts + 0,
   FIT_UINT16 total_ascent; // 1 * m + 0,
   FIT_UINT16 total_descent; // 1 * m + 0,
   FIT_UINT16 first_lap_index; //
   FIT_UINT16 num_laps; //
   FIT_UINT16 num_lengths; // 1 * lengths + 0, # of lengths of swim pool
   FIT_UINT16 normalized_power; // 1 * watts + 0,
   FIT_UINT16 training_stress_score; // 10 * tss + 0,
   FIT_UINT16 intensity_factor; // 1000 * if + 0,
   FIT_LEFT_RIGHT_BALANCE_100 left_right_balance; //
   FIT_UINT16 avg_stroke_distance; // 100 * m + 0,
   FIT_UINT16 pool_length; // 100 * m + 0,
   FIT_UINT16 threshold_power; // 1 * watts + 0,
   FIT_UINT16 num_active_lengths; // 1 * lengths + 0, # of active lengths of swim pool
   FIT_UINT16 avg_altitude; // 5 * m + 500,
   FIT_UINT16 max_altitude; // 5 * m + 500,
   FIT_SINT16 avg_grade; // 100 * % + 0,
   FIT_SINT16 avg_pos_grade; // 100 * % + 0,
   FIT_SINT16 avg_neg_grade; // 100 * % + 0,
   FIT_SINT16 max_pos_grade; // 100 * % + 0,
   FIT_SINT16 max_neg_grade; // 100 * % + 0,
   FIT_SINT16 avg_pos_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 avg_neg_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 max_pos_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 max_neg_vertical_speed; // 1000 * m/s + 0,
   FIT_UINT16 best_lap_index; //
   FIT_UINT16 min_altitude; // 5 * m + 500,
   FIT_UINT16 player_score; //
   FIT_UINT16 opponent_score; //
   FIT_UINT16 stroke_count[FIT_SESSION_MESG_STROKE_COUNT_COUNT]; // 1 * counts + 0, stroke_type enum used as the index
   FIT_UINT16 zone_count[FIT_SESSION_MESG_ZONE_COUNT_COUNT]; // 1 * counts + 0, zone number used as the index
   FIT_UINT16 max_ball_speed; // 100 * m/s + 0,
   FIT_UINT16 avg_ball_speed; // 100 * m/s + 0,
   FIT_UINT16 avg_vertical_oscillation; // 10 * mm + 0,
   FIT_UINT16 avg_stance_time_percent; // 100 * percent + 0,
   FIT_UINT16 avg_stance_time; // 10 * ms + 0,
   FIT_UINT16 avg_vam; // 1000 * m/s + 0,
   FIT_EVENT event; // session
   FIT_EVENT_TYPE event_type; // stop
   FIT_SPORT sport; //
   FIT_SUB_SPORT sub_sport; //
   FIT_UINT8 avg_heart_rate; // 1 * bpm + 0, average heart rate (excludes pause time)
   FIT_UINT8 max_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 avg_cadence; // 1 * rpm + 0, total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time
   FIT_UINT8 max_cadence; // 1 * rpm + 0,
   FIT_UINT8 total_training_effect; //
   FIT_UINT8 event_group; //
   FIT_SESSION_TRIGGER trigger; //
   FIT_SWIM_STROKE swim_stroke; // 1 * swim_stroke + 0,
   FIT_DISPLAY_MEASURE pool_length_unit; //
   FIT_UINT8 gps_accuracy; // 1 * m + 0,
   FIT_SINT8 avg_temperature; // 1 * C + 0,
   FIT_SINT8 max_temperature; // 1 * C + 0,
   FIT_UINT8 min_heart_rate; // 1 * bpm + 0,
   FIT_STRING opponent_name[FIT_SESSION_MESG_OPPONENT_NAME_COUNT]; //
   FIT_UINT8 avg_fractional_cadence; // 128 * rpm + 0, fractional part of the avg_cadence
   FIT_UINT8 max_fractional_cadence; // 128 * rpm + 0, fractional part of the max_cadence
   FIT_UINT8 total_fractional_cycles; // 128 * cycles + 0, fractional part of the total_cycles
   FIT_UINT8 sport_index; //
   FIT_UINT8 total_anaerobic_training_effect; //
   FIT_SINT8 min_temperature; // 1 * C + 0,
} FIT_SESSION_MESG;

typedef FIT_UINT8 FIT_SESSION_FIELD_NUM;

#define FIT_SESSION_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_SESSION_FIELD_NUM, 253))
#define FIT_SESSION_FIELD_NUM_START_TIME (FIT_CAST(FIT_SESSION_FIELD_NUM, 2))
#define FIT_SESSION_FIELD_NUM_START_POSITION_LAT (FIT_CAST(FIT_SESSION_FIELD_NUM, 3))
#define FIT_SESSION_FIELD_NUM_START_POSITION_LONG (FIT_CAST(FIT_SESSION_FIELD_NUM, 4))
#define FIT_SESSION_FIELD_NUM_TOTAL_ELAPSED_TIME (FIT_CAST(FIT_SESSION_FIELD_NUM, 7))
#define FIT_SESSION_FIELD_NUM_TOTAL_TIMER_TIME (FIT_CAST(FIT_SESSION_FIELD_NUM, 8))
#define FIT_SESSION_FIELD_NUM_TOTAL_DISTANCE (FIT_CAST(FIT_SESSION_FIELD_NUM, 9))
#define FIT_SESSION_FIELD_NUM_TOTAL_CYCLES (FIT_CAST(FIT_SESSION_FIELD_NUM, 10))
#define FIT_SESSION_FIELD_NUM_NEC_LAT (FIT_CAST(FIT_SESSION_FIELD_NUM, 29))
#define FIT_SESSION_FIELD_NUM_NEC_LONG (FIT_CAST(FIT_SESSION_FIELD_NUM, 30))
#define FIT_SESSION_FIELD_NUM_SWC_LAT (FIT_CAST(FIT_SESSION_FIELD_NUM, 31))
#define FIT_SESSION_FIELD_NUM_SWC_LONG (FIT_CAST(FIT_SESSION_FIELD_NUM, 32))
#define FIT_SESSION_FIELD_NUM_END_POSITION_LAT (FIT_CAST(FIT_SESSION_FIELD_NUM, 38))
#define FIT_SESSION_FIELD_NUM_END_POSITION_LONG (FIT_CAST(FIT_SESSION_FIELD_NUM, 39))
#define FIT_SESSION_FIELD_NUM_AVG_STROKE_COUNT (FIT_CAST(FIT_SESSION_FIELD_NUM, 41))
#define FIT_SESSION_FIELD_NUM_TOTAL_WORK (FIT_CAST(FIT_SESSION_FIELD_NUM, 48))
#define FIT_SESSION_FIELD_NUM_TOTAL_MOVING_TIME (FIT_CAST(FIT_SESSION_FIELD_NUM, 59))
#define FIT_SESSION_FIELD_NUM_TIME_IN_HR_ZONE (FIT_CAST(FIT_SESSION_FIELD_NUM, 65))
#define FIT_SESSION_FIELD_NUM_TIME_IN_SPEED_ZONE (FIT_CAST(FIT_SESSION_FIELD_NUM, 66))
#define FIT_SESSION_FIELD_NUM_TIME_IN_CADENCE_ZONE (FIT_CAST(FIT_SESSION_FIELD_NUM, 67))
#define FIT_SESSION_FIELD_NUM_TIME_IN_POWER_ZONE (FIT_CAST(FIT_SESSION_FIELD_NUM, 68))
#define FIT_SESSION_FIELD_NUM_AVG_LAP_TIME (FIT_CAST(FIT_SESSION_FIELD_NUM, 69))
#define FIT_SESSION_FIELD_NUM_SPORT_PROFILE_NAME (FIT_CAST(FIT_SESSION_FIELD_NUM, 110))
#define FIT_SESSION_FIELD_NUM_ENHANCED_AVG_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 124))
#define FIT_SESSION_FIELD_NUM_ENHANCED_MAX_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 125))
#define FIT_SESSION_FIELD_NUM_ENHANCED_AVG_ALTITUDE (FIT_CAST(FIT_SESSION_FIELD_NUM, 126))
#define FIT_SESSION_FIELD_NUM_ENHANCED_MIN_ALTITUDE (FIT_CAST(FIT_SESSION_FIELD_NUM, 127))
#define FIT_SESSION_FIELD_NUM_ENHANCED_MAX_ALTITUDE (FIT_CAST(FIT_SESSION_FIELD_NUM, 128))
#define FIT_SESSION_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_SESSION_FIELD_NUM, 254))
#define FIT_SESSION_FIELD_NUM_TOTAL_CALORIES (FIT_CAST(FIT_SESSION_FIELD_NUM, 11))
#define FIT_SESSION_FIELD_NUM_TOTAL_FAT_CALORIES (FIT_CAST(FIT_SESSION_FIELD_NUM, 13))
#define FIT_SESSION_FIELD_NUM_AVG_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 14))
#define FIT_SESSION_FIELD_NUM_MAX_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 15))
#define FIT_SESSION_FIELD_NUM_AVG_POWER (FIT_CAST(FIT_SESSION_FIELD_NUM, 20))
#define FIT_SESSION_FIELD_NUM_MAX_POWER (FIT_CAST(FIT_SESSION_FIELD_NUM, 21))
#define FIT_SESSION_FIELD_NUM_TOTAL_ASCENT (FIT_CAST(FIT_SESSION_FIELD_NUM, 22))
#define FIT_SESSION_FIELD_NUM_TOTAL_DESCENT (FIT_CAST(FIT_SESSION_FIELD_NUM, 23))
#define FIT_SESSION_FIELD_NUM_FIRST_LAP_INDEX (FIT_CAST(FIT_SESSION_FIELD_NUM, 25))
#define FIT_SESSION_FIELD_NUM_NUM_LAPS (FIT_CAST(FIT_SESSION_FIELD_NUM, 26))
#define FIT_SESSION_FIELD_NUM_NUM_LENGTHS (FIT_CAST(FIT_SESSION_FIELD_NUM, 33))
#define FIT_SESSION_FIELD_NUM_NORMALIZED_POWER (FIT_CAST(FIT_SESSION_FIELD_NUM, 34))
#define FIT_SESSION_FIELD_NUM_TRAINING_STRESS_SCORE (FIT_CAST(FIT_SESSION_FIELD_NUM, 35))
#define FIT_SESSION_FIELD_NUM_INTENSITY_FACTOR (FIT_CAST(FIT_SESSION_FIELD_NUM, 36))
#define FIT_SESSION_FIELD_NUM_LEFT_RIGHT_BALANCE (FIT_CAST(FIT_SESSION_FIELD_NUM, 37))
#define FIT_SESSION_FIELD_NUM_AVG_STROKE_DISTANCE (FIT_CAST(FIT_SESSION_FIELD_NUM, 42))
#define FIT_SESSION_FIELD_NUM_POOL_LENGTH (FIT_CAST(FIT_SESSION_FIELD_NUM, 44))
#define FIT_SESSION_FIELD_NUM_THRESHOLD_POWER (FIT_CAST(FIT_SESSION_FIELD_NUM, 45))
#define FIT_SESSION_FIELD_NUM_NUM_ACTIVE_LENGTHS (FIT_CAST(FIT_SESSION_FIELD_NUM, 47))
#define FIT_SESSION_FIELD_NUM_AVG_ALTITUDE (FIT_CAST(FIT_SESSION_FIELD_NUM, 49))
#define FIT_SESSION_FIELD_NUM_MAX_ALTITUDE (FIT_CAST(FIT_SESSION_FIELD_NUM, 50))
#define FIT_SESSION_FIELD_NUM_AVG_GRADE (FIT_CAST(FIT_SESSION_FIELD_NUM, 52))
#define FIT_SESSION_FIELD_NUM_AVG_POS_GRADE (FIT_CAST(FIT_SESSION_FIELD_NUM, 53))
#define FIT_SESSION_FIELD_NUM_AVG_NEG_GRADE (FIT_CAST(FIT_SESSION_FIELD_NUM, 54))
#define FIT_SESSION_FIELD_NUM_MAX_POS_GRADE (FIT_CAST(FIT_SESSION_FIELD_NUM, 55))
#define FIT_SESSION_FIELD_NUM_MAX_NEG_GRADE (FIT_CAST(FIT_SESSION_FIELD_NUM, 56))
#define FIT_SESSION_FIELD_NUM_AVG_POS_VERTICAL_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 60))
#define FIT_SESSION_FIELD_NUM_AVG_NEG_VERTICAL_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 61))
#define FIT_SESSION_FIELD_NUM_MAX_POS_VERTICAL_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 62))
#define FIT_SESSION_FIELD_NUM_MAX_NEG_VERTICAL_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 63))
#define FIT_SESSION_FIELD_NUM_BEST_LAP_INDEX (FIT_CAST(FIT_SESSION_FIELD_NUM, 70))
#define FIT_SESSION_FIELD_NUM_MIN_ALTITUDE (FIT_CAST(FIT_SESSION_FIELD_NUM, 71))
#define FIT_SESSION_FIELD_NUM_PLAYER_SCORE (FIT_CAST(FIT_SESSION_FIELD_NUM, 82))
#define FIT_SESSION_FIELD_NUM_OPPONENT_SCORE (FIT_CAST(FIT_SESSION_FIELD_NUM, 83))
#define FIT_SESSION_FIELD_NUM_STROKE_COUNT (FIT_CAST(FIT_SESSION_FIELD_NUM, 85))
#define FIT_SESSION_FIELD_NUM_ZONE_COUNT (FIT_CAST(FIT_SESSION_FIELD_NUM, 86))
#define FIT_SESSION_FIELD_NUM_MAX_BALL_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 87))
#define FIT_SESSION_FIELD_NUM_AVG_BALL_SPEED (FIT_CAST(FIT_SESSION_FIELD_NUM, 88))
#define FIT_SESSION_FIELD_NUM_AVG_VERTICAL_OSCILLATION (FIT_CAST(FIT_SESSION_FIELD_NUM, 89))
#define FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME_PERCENT (FIT_CAST(FIT_SESSION_FIELD_NUM, 90))
#define FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME (FIT_CAST(FIT_SESSION_FIELD_NUM, 91))
#define FIT_SESSION_FIELD_NUM_AVG_VAM (FIT_CAST(FIT_SESSION_FIELD_NUM, 139))
#define FIT_SESSION_FIELD_NUM_EVENT (FIT_CAST(FIT_SESSION_FIELD_NUM, 0))
#define FIT_SESSION_FIELD_NUM_EVENT_TYPE (FIT_CAST(FIT_SESSION_FIELD_NUM, 1))
#define FIT_SESSION_FIELD_NUM_SPORT (FIT_CAST(FIT_SESSION_FIELD_NUM, 5))
#define FIT_SESSION_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_SESSION_FIELD_NUM, 6))
#define FIT_SESSION_FIELD_NUM_AVG_HEART_RATE (FIT_CAST(FIT_SESSION_FIELD_NUM, 16))
#define FIT_SESSION_FIELD_NUM_MAX_HEART_RATE (FIT_CAST(FIT_SESSION_FIELD_NUM, 17))
#define FIT_SESSION_FIELD_NUM_AVG_CADENCE (FIT_CAST(FIT_SESSION_FIELD_NUM, 18))
#define FIT_SESSION_FIELD_NUM_MAX_CADENCE (FIT_CAST(FIT_SESSION_FIELD_NUM, 19))
#define FIT_SESSION_FIELD_NUM_TOTAL_TRAINING_EFFECT (FIT_CAST(FIT_SESSION_FIELD_NUM, 24))
#define FIT_SESSION_FIELD_NUM_EVENT_GROUP (FIT_CAST(FIT_SESSION_FIELD_NUM, 27))
#define FIT_SESSION_FIELD_NUM_TRIGGER (FIT_CAST(FIT_SESSION_FIELD_NUM, 28))
#define FIT_SESSION_FIELD_NUM_SWIM_STROKE (FIT_CAST(FIT_SESSION_FIELD_NUM, 43))
#define FIT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT (FIT_CAST(FIT_SESSION_FIELD_NUM, 46))
#define FIT_SESSION_FIELD_NUM_GPS_ACCURACY (FIT_CAST(FIT_SESSION_FIELD_NUM, 51))
#define FIT_SESSION_FIELD_NUM_AVG_TEMPERATURE (FIT_CAST(FIT_SESSION_FIELD_NUM, 57))
#define FIT_SESSION_FIELD_NUM_MAX_TEMPERATURE (FIT_CAST(FIT_SESSION_FIELD_NUM, 58))
#define FIT_SESSION_FIELD_NUM_MIN_HEART_RATE (FIT_CAST(FIT_SESSION_FIELD_NUM, 64))
#define FIT_SESSION_FIELD_NUM_OPPONENT_NAME (FIT_CAST(FIT_SESSION_FIELD_NUM, 84))
#define FIT_SESSION_FIELD_NUM_AVG_FRACTIONAL_CADENCE (FIT_CAST(FIT_SESSION_FIELD_NUM, 92))
#define FIT_SESSION_FIELD_NUM_MAX_FRACTIONAL_CADENCE (FIT_CAST(FIT_SESSION_FIELD_NUM, 93))
#define FIT_SESSION_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES (FIT_CAST(FIT_SESSION_FIELD_NUM, 94))
#define FIT_SESSION_FIELD_NUM_SPORT_INDEX (FIT_CAST(FIT_SESSION_FIELD_NUM, 111))
#define FIT_SESSION_FIELD_NUM_TOTAL_ANAEROBIC_TRAINING_EFFECT (FIT_CAST(FIT_SESSION_FIELD_NUM, 137))
#define FIT_SESSION_FIELD_NUM_MIN_TEMPERATURE (FIT_CAST(FIT_SESSION_FIELD_NUM, 150))

typedef enum
{
   FIT_SESSION_MESG_TIMESTAMP,
   FIT_SESSION_MESG_START_TIME,
   FIT_SESSION_MESG_START_POSITION_LAT,
   FIT_SESSION_MESG_START_POSITION_LONG,
   FIT_SESSION_MESG_TOTAL_ELAPSED_TIME,
   FIT_SESSION_MESG_TOTAL_TIMER_TIME,
   FIT_SESSION_MESG_TOTAL_DISTANCE,
   FIT_SESSION_MESG_TOTAL_CYCLES,
   FIT_SESSION_MESG_NEC_LAT,
   FIT_SESSION_MESG_NEC_LONG,
   FIT_SESSION_MESG_SWC_LAT,
   FIT_SESSION_MESG_SWC_LONG,
   FIT_SESSION_MESG_END_POSITION_LAT,
   FIT_SESSION_MESG_END_POSITION_LONG,
   FIT_SESSION_MESG_AVG_STROKE_COUNT,
   FIT_SESSION_MESG_TOTAL_WORK,
   FIT_SESSION_MESG_TOTAL_MOVING_TIME,
   FIT_SESSION_MESG_TIME_IN_HR_ZONE,
   FIT_SESSION_MESG_TIME_IN_SPEED_ZONE,
   FIT_SESSION_MESG_TIME_IN_CADENCE_ZONE,
   FIT_SESSION_MESG_TIME_IN_POWER_ZONE,
   FIT_SESSION_MESG_AVG_LAP_TIME,
   FIT_SESSION_MESG_SPORT_PROFILE_NAME,
   FIT_SESSION_MESG_ENHANCED_AVG_SPEED,
   FIT_SESSION_MESG_ENHANCED_MAX_SPEED,
   FIT_SESSION_MESG_ENHANCED_AVG_ALTITUDE,
   FIT_SESSION_MESG_ENHANCED_MIN_ALTITUDE,
   FIT_SESSION_MESG_ENHANCED_MAX_ALTITUDE,
   FIT_SESSION_MESG_MESSAGE_INDEX,
   FIT_SESSION_MESG_TOTAL_CALORIES,
   FIT_SESSION_MESG_TOTAL_FAT_CALORIES,
   FIT_SESSION_MESG_AVG_SPEED,
   FIT_SESSION_MESG_MAX_SPEED,
   FIT_SESSION_MESG_AVG_POWER,
   FIT_SESSION_MESG_MAX_POWER,
   FIT_SESSION_MESG_TOTAL_ASCENT,
   FIT_SESSION_MESG_TOTAL_DESCENT,
   FIT_SESSION_MESG_FIRST_LAP_INDEX,
   FIT_SESSION_MESG_NUM_LAPS,
   FIT_SESSION_MESG_NUM_LENGTHS,
   FIT_SESSION_MESG_NORMALIZED_POWER,
   FIT_SESSION_MESG_TRAINING_STRESS_SCORE,
   FIT_SESSION_MESG_INTENSITY_FACTOR,
   FIT_SESSION_MESG_LEFT_RIGHT_BALANCE,
   FIT_SESSION_MESG_AVG_STROKE_DISTANCE,
   FIT_SESSION_MESG_POOL_LENGTH,
   FIT_SESSION_MESG_THRESHOLD_POWER,
   FIT_SESSION_MESG_NUM_ACTIVE_LENGTHS,
   FIT_SESSION_MESG_AVG_ALTITUDE,
   FIT_SESSION_MESG_MAX_ALTITUDE,
   FIT_SESSION_MESG_AVG_GRADE,
   FIT_SESSION_MESG_AVG_POS_GRADE,
   FIT_SESSION_MESG_AVG_NEG_GRADE,
   FIT_SESSION_MESG_MAX_POS_GRADE,
   FIT_SESSION_MESG_MAX_NEG_GRADE,
   FIT_SESSION_MESG_AVG_POS_VERTICAL_SPEED,
   FIT_SESSION_MESG_AVG_NEG_VERTICAL_SPEED,
   FIT_SESSION_MESG_MAX_POS_VERTICAL_SPEED,
   FIT_SESSION_MESG_MAX_NEG_VERTICAL_SPEED,
   FIT_SESSION_MESG_BEST_LAP_INDEX,
   FIT_SESSION_MESG_MIN_ALTITUDE,
   FIT_SESSION_MESG_PLAYER_SCORE,
   FIT_SESSION_MESG_OPPONENT_SCORE,
   FIT_SESSION_MESG_STROKE_COUNT,
   FIT_SESSION_MESG_ZONE_COUNT,
   FIT_SESSION_MESG_MAX_BALL_SPEED,
   FIT_SESSION_MESG_AVG_BALL_SPEED,
   FIT_SESSION_MESG_AVG_VERTICAL_OSCILLATION,
   FIT_SESSION_MESG_AVG_STANCE_TIME_PERCENT,
   FIT_SESSION_MESG_AVG_STANCE_TIME,
   FIT_SESSION_MESG_AVG_VAM,
   FIT_SESSION_MESG_EVENT,
   FIT_SESSION_MESG_EVENT_TYPE,
   FIT_SESSION_MESG_SPORT,
   FIT_SESSION_MESG_SUB_SPORT,
   FIT_SESSION_MESG_AVG_HEART_RATE,
   FIT_SESSION_MESG_MAX_HEART_RATE,
   FIT_SESSION_MESG_AVG_CADENCE,
   FIT_SESSION_MESG_MAX_CADENCE,
   FIT_SESSION_MESG_TOTAL_TRAINING_EFFECT,
   FIT_SESSION_MESG_EVENT_GROUP,
   FIT_SESSION_MESG_TRIGGER,
   FIT_SESSION_MESG_SWIM_STROKE,
   FIT_SESSION_MESG_POOL_LENGTH_UNIT,
   FIT_SESSION_MESG_GPS_ACCURACY,
   FIT_SESSION_MESG_AVG_TEMPERATURE,
   FIT_SESSION_MESG_MAX_TEMPERATURE,
   FIT_SESSION_MESG_MIN_HEART_RATE,
   FIT_SESSION_MESG_OPPONENT_NAME,
   FIT_SESSION_MESG_AVG_FRACTIONAL_CADENCE,
   FIT_SESSION_MESG_MAX_FRACTIONAL_CADENCE,
   FIT_SESSION_MESG_TOTAL_FRACTIONAL_CYCLES,
   FIT_SESSION_MESG_SPORT_INDEX,
   FIT_SESSION_MESG_TOTAL_ANAEROBIC_TRAINING_EFFECT,
   FIT_SESSION_MESG_MIN_TEMPERATURE,
   FIT_SESSION_MESG_FIELDS
} FIT_SESSION_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SESSION_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SESSION_MESG_DEF;

// lap message

#define FIT_LAP_MESG_SIZE                                                       190
#define FIT_LAP_MESG_DEF_SIZE                                                   257
#define FIT_LAP_MESG_TIME_IN_HR_ZONE_COUNT                                      1
#define FIT_LAP_MESG_TIME_IN_SPEED_ZONE_COUNT                                   1
#define FIT_LAP_MESG_TIME_IN_CADENCE_ZONE_COUNT                                 1
#define FIT_LAP_MESG_TIME_IN_POWER_ZONE_COUNT                                   1
#define FIT_LAP_MESG_STROKE_COUNT_COUNT                                         1
#define FIT_LAP_MESG_ZONE_COUNT_COUNT                                           1
#define FIT_LAP_MESG_AVG_TOTAL_HEMOGLOBIN_CONC_COUNT                            1
#define FIT_LAP_MESG_MIN_TOTAL_HEMOGLOBIN_CONC_COUNT                            1
#define FIT_LAP_MESG_MAX_TOTAL_HEMOGLOBIN_CONC_COUNT                            1
#define FIT_LAP_MESG_AVG_SATURATED_HEMOGLOBIN_PERCENT_COUNT                     1
#define FIT_LAP_MESG_MIN_SATURATED_HEMOGLOBIN_PERCENT_COUNT                     1
#define FIT_LAP_MESG_MAX_SATURATED_HEMOGLOBIN_PERCENT_COUNT                     1

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0, Lap end time.
   FIT_DATE_TIME start_time; //
   FIT_SINT32 start_position_lat; // 1 * semicircles + 0,
   FIT_SINT32 start_position_long; // 1 * semicircles + 0,
   FIT_SINT32 end_position_lat; // 1 * semicircles + 0,
   FIT_SINT32 end_position_long; // 1 * semicircles + 0,
   FIT_UINT32 total_elapsed_time; // 1000 * s + 0, Time (includes pauses)
   FIT_UINT32 total_timer_time; // 1000 * s + 0, Timer Time (excludes pauses)
   FIT_UINT32 total_distance; // 100 * m + 0,
   FIT_UINT32 total_cycles; // 1 * cycles + 0,
   FIT_UINT32 total_work; // 1 * J + 0,
   FIT_UINT32 total_moving_time; // 1000 * s + 0,
   FIT_UINT32 time_in_hr_zone[FIT_LAP_MESG_TIME_IN_HR_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_speed_zone[FIT_LAP_MESG_TIME_IN_SPEED_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_cadence_zone[FIT_LAP_MESG_TIME_IN_CADENCE_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_power_zone[FIT_LAP_MESG_TIME_IN_POWER_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 enhanced_avg_speed; // 1000 * m/s + 0,
   FIT_UINT32 enhanced_max_speed; // 1000 * m/s + 0,
   FIT_UINT32 enhanced_avg_altitude; // 5 * m + 500,
   FIT_UINT32 enhanced_min_altitude; // 5 * m + 500,
   FIT_UINT32 enhanced_max_altitude; // 5 * m + 500,
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 total_calories; // 1 * kcal + 0,
   FIT_UINT16 total_fat_calories; // 1 * kcal + 0, If New Leaf
   FIT_UINT16 avg_speed; // 1000 * m/s + 0,
   FIT_UINT16 max_speed; // 1000 * m/s + 0,
   FIT_UINT16 avg_power; // 1 * watts + 0, total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time
   FIT_UINT16 max_power; // 1 * watts + 0,
   FIT_UINT16 total_ascent; // 1 * m + 0,
   FIT_UINT16 total_descent; // 1 * m + 0,
   FIT_UINT16 num_lengths; // 1 * lengths + 0, # of lengths of swim pool
   FIT_UINT16 normalized_power; // 1 * watts + 0,
   FIT_LEFT_RIGHT_BALANCE_100 left_right_balance; //
   FIT_UINT16 first_length_index; //
   FIT_UINT16 avg_stroke_distance; // 100 * m + 0,
   FIT_UINT16 num_active_lengths; // 1 * lengths + 0, # of active lengths of swim pool
   FIT_UINT16 avg_altitude; // 5 * m + 500,
   FIT_UINT16 max_altitude; // 5 * m + 500,
   FIT_SINT16 avg_grade; // 100 * % + 0,
   FIT_SINT16 avg_pos_grade; // 100 * % + 0,
   FIT_SINT16 avg_neg_grade; // 100 * % + 0,
   FIT_SINT16 max_pos_grade; // 100 * % + 0,
   FIT_SINT16 max_neg_grade; // 100 * % + 0,
   FIT_SINT16 avg_pos_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 avg_neg_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 max_pos_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 max_neg_vertical_speed; // 1000 * m/s + 0,
   FIT_UINT16 repetition_num; //
   FIT_UINT16 min_altitude; // 5 * m + 500,
   FIT_MESSAGE_INDEX wkt_step_index; //
   FIT_UINT16 opponent_score; //
   FIT_UINT16 stroke_count[FIT_LAP_MESG_STROKE_COUNT_COUNT]; // 1 * counts + 0, stroke_type enum used as the index
   FIT_UINT16 zone_count[FIT_LAP_MESG_ZONE_COUNT_COUNT]; // 1 * counts + 0, zone number used as the index
   FIT_UINT16 avg_vertical_oscillation; // 10 * mm + 0,
   FIT_UINT16 avg_stance_time_percent; // 100 * percent + 0,
   FIT_UINT16 avg_stance_time; // 10 * ms + 0,
   FIT_UINT16 player_score; //
   FIT_UINT16 avg_total_hemoglobin_conc[FIT_LAP_MESG_AVG_TOTAL_HEMOGLOBIN_CONC_COUNT]; // 100 * g/dL + 0, Avg saturated and unsaturated hemoglobin
   FIT_UINT16 min_total_hemoglobin_conc[FIT_LAP_MESG_MIN_TOTAL_HEMOGLOBIN_CONC_COUNT]; // 100 * g/dL + 0, Min saturated and unsaturated hemoglobin
   FIT_UINT16 max_total_hemoglobin_conc[FIT_LAP_MESG_MAX_TOTAL_HEMOGLOBIN_CONC_COUNT]; // 100 * g/dL + 0, Max saturated and unsaturated hemoglobin
   FIT_UINT16 avg_saturated_hemoglobin_percent[FIT_LAP_MESG_AVG_SATURATED_HEMOGLOBIN_PERCENT_COUNT]; // 10 * % + 0, Avg percentage of hemoglobin saturated with oxygen
   FIT_UINT16 min_saturated_hemoglobin_percent[FIT_LAP_MESG_MIN_SATURATED_HEMOGLOBIN_PERCENT_COUNT]; // 10 * % + 0, Min percentage of hemoglobin saturated with oxygen
   FIT_UINT16 max_saturated_hemoglobin_percent[FIT_LAP_MESG_MAX_SATURATED_HEMOGLOBIN_PERCENT_COUNT]; // 10 * % + 0, Max percentage of hemoglobin saturated with oxygen
   FIT_UINT16 avg_vam; // 1000 * m/s + 0,
   FIT_EVENT event; //
   FIT_EVENT_TYPE event_type; //
   FIT_UINT8 avg_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 max_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 avg_cadence; // 1 * rpm + 0, total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time
   FIT_UINT8 max_cadence; // 1 * rpm + 0,
   FIT_INTENSITY intensity; //
   FIT_LAP_TRIGGER lap_trigger; //
   FIT_SPORT sport; //
   FIT_UINT8 event_group; //
   FIT_SWIM_STROKE swim_stroke; //
   FIT_SUB_SPORT sub_sport; //
   FIT_UINT8 gps_accuracy; // 1 * m + 0,
   FIT_SINT8 avg_temperature; // 1 * C + 0,
   FIT_SINT8 max_temperature; // 1 * C + 0,
   FIT_UINT8 min_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 avg_fractional_cadence; // 128 * rpm + 0, fractional part of the avg_cadence
   FIT_UINT8 max_fractional_cadence; // 128 * rpm + 0, fractional part of the max_cadence
   FIT_UINT8 total_fractional_cycles; // 128 * cycles + 0, fractional part of the total_cycles
   FIT_SINT8 min_temperature; // 1 * C + 0,
} FIT_LAP_MESG;

typedef FIT_UINT8 FIT_LAP_FIELD_NUM;

#define FIT_LAP_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_LAP_FIELD_NUM, 253))
#define FIT_LAP_FIELD_NUM_START_TIME (FIT_CAST(FIT_LAP_FIELD_NUM, 2))
#define FIT_LAP_FIELD_NUM_START_POSITION_LAT (FIT_CAST(FIT_LAP_FIELD_NUM, 3))
#define FIT_LAP_FIELD_NUM_START_POSITION_LONG (FIT_CAST(FIT_LAP_FIELD_NUM, 4))
#define FIT_LAP_FIELD_NUM_END_POSITION_LAT (FIT_CAST(FIT_LAP_FIELD_NUM, 5))
#define FIT_LAP_FIELD_NUM_END_POSITION_LONG (FIT_CAST(FIT_LAP_FIELD_NUM, 6))
#define FIT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME (FIT_CAST(FIT_LAP_FIELD_NUM, 7))
#define FIT_LAP_FIELD_NUM_TOTAL_TIMER_TIME (FIT_CAST(FIT_LAP_FIELD_NUM, 8))
#define FIT_LAP_FIELD_NUM_TOTAL_DISTANCE (FIT_CAST(FIT_LAP_FIELD_NUM, 9))
#define FIT_LAP_FIELD_NUM_TOTAL_CYCLES (FIT_CAST(FIT_LAP_FIELD_NUM, 10))
#define FIT_LAP_FIELD_NUM_TOTAL_WORK (FIT_CAST(FIT_LAP_FIELD_NUM, 41))
#define FIT_LAP_FIELD_NUM_TOTAL_MOVING_TIME (FIT_CAST(FIT_LAP_FIELD_NUM, 52))
#define FIT_LAP_FIELD_NUM_TIME_IN_HR_ZONE (FIT_CAST(FIT_LAP_FIELD_NUM, 57))
#define FIT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE (FIT_CAST(FIT_LAP_FIELD_NUM, 58))
#define FIT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE (FIT_CAST(FIT_LAP_FIELD_NUM, 59))
#define FIT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE (FIT_CAST(FIT_LAP_FIELD_NUM, 60))
#define FIT_LAP_FIELD_NUM_ENHANCED_AVG_SPEED (FIT_CAST(FIT_LAP_FIELD_NUM, 110))
#define FIT_LAP_FIELD_NUM_ENHANCED_MAX_SPEED (FIT_CAST(FIT_LAP_FIELD_NUM, 111))
#define FIT_LAP_FIELD_NUM_ENHANCED_AVG_ALTITUDE (FIT_CAST(FIT_LAP_FIELD_NUM, 112))
#define FIT_LAP_FIELD_NUM_ENHANCED_MIN_ALTITUDE (FIT_CAST(FIT_LAP_FIELD_NUM, 113))
#define FIT_LAP_FIELD_NUM_ENHANCED_MAX_ALTITUDE (FIT_CAST(FIT_LAP_FIELD_NUM, 114))
#define FIT_LAP_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_LAP_FIELD_NUM, 254))
#define FIT_LAP_FIELD_NUM_TOTAL_CALORIES (FIT_CAST(FIT_LAP_FIELD_NUM, 11))
#define FIT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES (FIT_CAST(FIT_LAP_FIELD_NUM, 12))
#define FIT_LAP_FIELD_NUM_AVG_SPEED (FIT_CAST(FIT_LAP_FIELD_NUM, 13))
#define FIT_LAP_FIELD_NUM_MAX_SPEED (FIT_CAST(FIT_LAP_FIELD_NUM, 14))
#define FIT_LAP_FIELD_NUM_AVG_POWER (FIT_CAST(FIT_LAP_FIELD_NUM, 19))
#define FIT_LAP_FIELD_NUM_MAX_POWER (FIT_CAST(FIT_LAP_FIELD_NUM, 20))
#define FIT_LAP_FIELD_NUM_TOTAL_ASCENT (FIT_CAST(FIT_LAP_FIELD_NUM, 21))
#define FIT_LAP_FIELD_NUM_TOTAL_DESCENT (FIT_CAST(FIT_LAP_FIELD_NUM, 22))
#define FIT_LAP_FIELD_NUM_NUM_LENGTHS (FIT_CAST(FIT_LAP_FIELD_NUM, 32))
#define FIT_LAP_FIELD_NUM_NORMALIZED_POWER (FIT_CAST(FIT_LAP_FIELD_NUM, 33))
#define FIT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE (FIT_CAST(FIT_LAP_FIELD_NUM, 34))
#define FIT_LAP_FIELD_NUM_FIRST_LENGTH_INDEX (FIT_CAST(FIT_LAP_FIELD_NUM, 35))
#define FIT_LAP_FIELD_NUM_AVG_STROKE_DISTANCE (FIT_CAST(FIT_LAP_FIELD_NUM, 37))
#define FIT_LAP_FIELD_NUM_NUM_ACTIVE_LENGTHS (FIT_CAST(FIT_LAP_FIELD_NUM, 40))
#define FIT_LAP_FIELD_NUM_AVG_ALTITUDE (FIT_CAST(FIT_LAP_FIELD_NUM, 42))
#define FIT_LAP_FIELD_NUM_MAX_ALTITUDE (FIT_CAST(FIT_LAP_FIELD_NUM, 43))
#define FIT_LAP_FIELD_NUM_AVG_GRADE (FIT_CAST(FIT_LAP_FIELD_NUM, 45))
#define FIT_LAP_FIELD_NUM_AVG_POS_GRADE (FIT_CAST(FIT_LAP_FIELD_NUM, 46))
#define FIT_LAP_FIELD_NUM_AVG_NEG_GRADE (FIT_CAST(FIT_LAP_FIELD_NUM, 47))
#define FIT_LAP_FIELD_NUM_MAX_POS_GRADE (FIT_CAST(FIT_LAP_FIELD_NUM, 48))
#define FIT_LAP_FIELD_NUM_MAX_NEG_GRADE (FIT_CAST(FIT_LAP_FIELD_NUM, 49))
#define FIT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED (FIT_CAST(FIT_LAP_FIELD_NUM, 53))
#define FIT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED (FIT_CAST(FIT_LAP_FIELD_NUM, 54))
#define FIT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED (FIT_CAST(FIT_LAP_FIELD_NUM, 55))
#define FIT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED (FIT_CAST(FIT_LAP_FIELD_NUM, 56))
#define FIT_LAP_FIELD_NUM_REPETITION_NUM (FIT_CAST(FIT_LAP_FIELD_NUM, 61))
#define FIT_LAP_FIELD_NUM_MIN_ALTITUDE (FIT_CAST(FIT_LAP_FIELD_NUM, 62))
#define FIT_LAP_FIELD_NUM_WKT_STEP_INDEX (FIT_CAST(FIT_LAP_FIELD_NUM, 71))
#define FIT_LAP_FIELD_NUM_OPPONENT_SCORE (FIT_CAST(FIT_LAP_FIELD_NUM, 74))
#define FIT_LAP_FIELD_NUM_STROKE_COUNT (FIT_CAST(FIT_LAP_FIELD_NUM, 75))
#define FIT_LAP_FIELD_NUM_ZONE_COUNT (FIT_CAST(FIT_LAP_FIELD_NUM, 76))
#define FIT_LAP_FIELD_NUM_AVG_VERTICAL_OSCILLATION (FIT_CAST(FIT_LAP_FIELD_NUM, 77))
#define FIT_LAP_FIELD_NUM_AVG_STANCE_TIME_PERCENT (FIT_CAST(FIT_LAP_FIELD_NUM, 78))
#define FIT_LAP_FIELD_NUM_AVG_STANCE_TIME (FIT_CAST(FIT_LAP_FIELD_NUM, 79))
#define FIT_LAP_FIELD_NUM_PLAYER_SCORE (FIT_CAST(FIT_LAP_FIELD_NUM, 83))
#define FIT_LAP_FIELD_NUM_AVG_TOTAL_HEMOGLOBIN_CONC (FIT_CAST(FIT_LAP_FIELD_NUM, 84))
#define FIT_LAP_FIELD_NUM_MIN_TOTAL_HEMOGLOBIN_CONC (FIT_CAST(FIT_LAP_FIELD_NUM, 85))
#define FIT_LAP_FIELD_NUM_MAX_TOTAL_HEMOGLOBIN_CONC (FIT_CAST(FIT_LAP_FIELD_NUM, 86))
#define FIT_LAP_FIELD_NUM_AVG_SATURATED_HEMOGLOBIN_PERCENT (FIT_CAST(FIT_LAP_FIELD_NUM, 87))
#define FIT_LAP_FIELD_NUM_MIN_SATURATED_HEMOGLOBIN_PERCENT (FIT_CAST(FIT_LAP_FIELD_NUM, 88))
#define FIT_LAP_FIELD_NUM_MAX_SATURATED_HEMOGLOBIN_PERCENT (FIT_CAST(FIT_LAP_FIELD_NUM, 89))
#define FIT_LAP_FIELD_NUM_AVG_VAM (FIT_CAST(FIT_LAP_FIELD_NUM, 121))
#define FIT_LAP_FIELD_NUM_EVENT (FIT_CAST(FIT_LAP_FIELD_NUM, 0))
#define FIT_LAP_FIELD_NUM_EVENT_TYPE (FIT_CAST(FIT_LAP_FIELD_NUM, 1))
#define FIT_LAP_FIELD_NUM_AVG_HEART_RATE (FIT_CAST(FIT_LAP_FIELD_NUM, 15))
#define FIT_LAP_FIELD_NUM_MAX_HEART_RATE (FIT_CAST(FIT_LAP_FIELD_NUM, 16))
#define FIT_LAP_FIELD_NUM_AVG_CADENCE (FIT_CAST(FIT_LAP_FIELD_NUM, 17))
#define FIT_LAP_FIELD_NUM_MAX_CADENCE (FIT_CAST(FIT_LAP_FIELD_NUM, 18))
#define FIT_LAP_FIELD_NUM_INTENSITY (FIT_CAST(FIT_LAP_FIELD_NUM, 23))
#define FIT_LAP_FIELD_NUM_LAP_TRIGGER (FIT_CAST(FIT_LAP_FIELD_NUM, 24))
#define FIT_LAP_FIELD_NUM_SPORT (FIT_CAST(FIT_LAP_FIELD_NUM, 25))
#define FIT_LAP_FIELD_NUM_EVENT_GROUP (FIT_CAST(FIT_LAP_FIELD_NUM, 26))
#define FIT_LAP_FIELD_NUM_SWIM_STROKE (FIT_CAST(FIT_LAP_FIELD_NUM, 38))
#define FIT_LAP_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_LAP_FIELD_NUM, 39))
#define FIT_LAP_FIELD_NUM_GPS_ACCURACY (FIT_CAST(FIT_LAP_FIELD_NUM, 44))
#define FIT_LAP_FIELD_NUM_AVG_TEMPERATURE (FIT_CAST(FIT_LAP_FIELD_NUM, 50))
#define FIT_LAP_FIELD_NUM_MAX_TEMPERATURE (FIT_CAST(FIT_LAP_FIELD_NUM, 51))
#define FIT_LAP_FIELD_NUM_MIN_HEART_RATE (FIT_CAST(FIT_LAP_FIELD_NUM, 63))
#define FIT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE (FIT_CAST(FIT_LAP_FIELD_NUM, 80))
#define FIT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE (FIT_CAST(FIT_LAP_FIELD_NUM, 81))
#define FIT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES (FIT_CAST(FIT_LAP_FIELD_NUM, 82))
#define FIT_LAP_FIELD_NUM_MIN_TEMPERATURE (FIT_CAST(FIT_LAP_FIELD_NUM, 124))

typedef enum
{
   FIT_LAP_MESG_TIMESTAMP,
   FIT_LAP_MESG_START_TIME,
   FIT_LAP_MESG_START_POSITION_LAT,
   FIT_LAP_MESG_START_POSITION_LONG,
   FIT_LAP_MESG_END_POSITION_LAT,
   FIT_LAP_MESG_END_POSITION_LONG,
   FIT_LAP_MESG_TOTAL_ELAPSED_TIME,
   FIT_LAP_MESG_TOTAL_TIMER_TIME,
   FIT_LAP_MESG_TOTAL_DISTANCE,
   FIT_LAP_MESG_TOTAL_CYCLES,
   FIT_LAP_MESG_TOTAL_WORK,
   FIT_LAP_MESG_TOTAL_MOVING_TIME,
   FIT_LAP_MESG_TIME_IN_HR_ZONE,
   FIT_LAP_MESG_TIME_IN_SPEED_ZONE,
   FIT_LAP_MESG_TIME_IN_CADENCE_ZONE,
   FIT_LAP_MESG_TIME_IN_POWER_ZONE,
   FIT_LAP_MESG_ENHANCED_AVG_SPEED,
   FIT_LAP_MESG_ENHANCED_MAX_SPEED,
   FIT_LAP_MESG_ENHANCED_AVG_ALTITUDE,
   FIT_LAP_MESG_ENHANCED_MIN_ALTITUDE,
   FIT_LAP_MESG_ENHANCED_MAX_ALTITUDE,
   FIT_LAP_MESG_MESSAGE_INDEX,
   FIT_LAP_MESG_TOTAL_CALORIES,
   FIT_LAP_MESG_TOTAL_FAT_CALORIES,
   FIT_LAP_MESG_AVG_SPEED,
   FIT_LAP_MESG_MAX_SPEED,
   FIT_LAP_MESG_AVG_POWER,
   FIT_LAP_MESG_MAX_POWER,
   FIT_LAP_MESG_TOTAL_ASCENT,
   FIT_LAP_MESG_TOTAL_DESCENT,
   FIT_LAP_MESG_NUM_LENGTHS,
   FIT_LAP_MESG_NORMALIZED_POWER,
   FIT_LAP_MESG_LEFT_RIGHT_BALANCE,
   FIT_LAP_MESG_FIRST_LENGTH_INDEX,
   FIT_LAP_MESG_AVG_STROKE_DISTANCE,
   FIT_LAP_MESG_NUM_ACTIVE_LENGTHS,
   FIT_LAP_MESG_AVG_ALTITUDE,
   FIT_LAP_MESG_MAX_ALTITUDE,
   FIT_LAP_MESG_AVG_GRADE,
   FIT_LAP_MESG_AVG_POS_GRADE,
   FIT_LAP_MESG_AVG_NEG_GRADE,
   FIT_LAP_MESG_MAX_POS_GRADE,
   FIT_LAP_MESG_MAX_NEG_GRADE,
   FIT_LAP_MESG_AVG_POS_VERTICAL_SPEED,
   FIT_LAP_MESG_AVG_NEG_VERTICAL_SPEED,
   FIT_LAP_MESG_MAX_POS_VERTICAL_SPEED,
   FIT_LAP_MESG_MAX_NEG_VERTICAL_SPEED,
   FIT_LAP_MESG_REPETITION_NUM,
   FIT_LAP_MESG_MIN_ALTITUDE,
   FIT_LAP_MESG_WKT_STEP_INDEX,
   FIT_LAP_MESG_OPPONENT_SCORE,
   FIT_LAP_MESG_STROKE_COUNT,
   FIT_LAP_MESG_ZONE_COUNT,
   FIT_LAP_MESG_AVG_VERTICAL_OSCILLATION,
   FIT_LAP_MESG_AVG_STANCE_TIME_PERCENT,
   FIT_LAP_MESG_AVG_STANCE_TIME,
   FIT_LAP_MESG_PLAYER_SCORE,
   FIT_LAP_MESG_AVG_TOTAL_HEMOGLOBIN_CONC,
   FIT_LAP_MESG_MIN_TOTAL_HEMOGLOBIN_CONC,
   FIT_LAP_MESG_MAX_TOTAL_HEMOGLOBIN_CONC,
   FIT_LAP_MESG_AVG_SATURATED_HEMOGLOBIN_PERCENT,
   FIT_LAP_MESG_MIN_SATURATED_HEMOGLOBIN_PERCENT,
   FIT_LAP_MESG_MAX_SATURATED_HEMOGLOBIN_PERCENT,
   FIT_LAP_MESG_AVG_VAM,
   FIT_LAP_MESG_EVENT,
   FIT_LAP_MESG_EVENT_TYPE,
   FIT_LAP_MESG_AVG_HEART_RATE,
   FIT_LAP_MESG_MAX_HEART_RATE,
   FIT_LAP_MESG_AVG_CADENCE,
   FIT_LAP_MESG_MAX_CADENCE,
   FIT_LAP_MESG_INTENSITY,
   FIT_LAP_MESG_LAP_TRIGGER,
   FIT_LAP_MESG_SPORT,
   FIT_LAP_MESG_EVENT_GROUP,
   FIT_LAP_MESG_SWIM_STROKE,
   FIT_LAP_MESG_SUB_SPORT,
   FIT_LAP_MESG_GPS_ACCURACY,
   FIT_LAP_MESG_AVG_TEMPERATURE,
   FIT_LAP_MESG_MAX_TEMPERATURE,
   FIT_LAP_MESG_MIN_HEART_RATE,
   FIT_LAP_MESG_AVG_FRACTIONAL_CADENCE,
   FIT_LAP_MESG_MAX_FRACTIONAL_CADENCE,
   FIT_LAP_MESG_TOTAL_FRACTIONAL_CYCLES,
   FIT_LAP_MESG_MIN_TEMPERATURE,
   FIT_LAP_MESG_FIELDS
} FIT_LAP_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_LAP_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_LAP_MESG_DEF;

// length message

#define FIT_LENGTH_MESG_SIZE                                                    38
#define FIT_LENGTH_MESG_DEF_SIZE                                                59
#define FIT_LENGTH_MESG_STROKE_COUNT_COUNT                                      1
#define FIT_LENGTH_MESG_ZONE_COUNT_COUNT                                        1

typedef struct
{
   FIT_DATE_TIME timestamp; //
   FIT_DATE_TIME start_time; //
   FIT_UINT32 total_elapsed_time; // 1000 * s + 0,
   FIT_UINT32 total_timer_time; // 1000 * s + 0,
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 total_strokes; // 1 * strokes + 0,
   FIT_UINT16 avg_speed; // 1000 * m/s + 0,
   FIT_UINT16 total_calories; // 1 * kcal + 0,
   FIT_UINT16 player_score; //
   FIT_UINT16 opponent_score; //
   FIT_UINT16 stroke_count[FIT_LENGTH_MESG_STROKE_COUNT_COUNT]; // 1 * counts + 0, stroke_type enum used as the index
   FIT_UINT16 zone_count[FIT_LENGTH_MESG_ZONE_COUNT_COUNT]; // 1 * counts + 0, zone number used as the index
   FIT_EVENT event; //
   FIT_EVENT_TYPE event_type; //
   FIT_SWIM_STROKE swim_stroke; // 1 * swim_stroke + 0,
   FIT_UINT8 avg_swimming_cadence; // 1 * strokes/min + 0,
   FIT_UINT8 event_group; //
   FIT_LENGTH_TYPE length_type; //
} FIT_LENGTH_MESG;

typedef FIT_UINT8 FIT_LENGTH_FIELD_NUM;

#define FIT_LENGTH_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_LENGTH_FIELD_NUM, 253))
#define FIT_LENGTH_FIELD_NUM_START_TIME (FIT_CAST(FIT_LENGTH_FIELD_NUM, 2))
#define FIT_LENGTH_FIELD_NUM_TOTAL_ELAPSED_TIME (FIT_CAST(FIT_LENGTH_FIELD_NUM, 3))
#define FIT_LENGTH_FIELD_NUM_TOTAL_TIMER_TIME (FIT_CAST(FIT_LENGTH_FIELD_NUM, 4))
#define FIT_LENGTH_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_LENGTH_FIELD_NUM, 254))
#define FIT_LENGTH_FIELD_NUM_TOTAL_STROKES (FIT_CAST(FIT_LENGTH_FIELD_NUM, 5))
#define FIT_LENGTH_FIELD_NUM_AVG_SPEED (FIT_CAST(FIT_LENGTH_FIELD_NUM, 6))
#define FIT_LENGTH_FIELD_NUM_TOTAL_CALORIES (FIT_CAST(FIT_LENGTH_FIELD_NUM, 11))
#define FIT_LENGTH_FIELD_NUM_PLAYER_SCORE (FIT_CAST(FIT_LENGTH_FIELD_NUM, 18))
#define FIT_LENGTH_FIELD_NUM_OPPONENT_SCORE (FIT_CAST(FIT_LENGTH_FIELD_NUM, 19))
#define FIT_LENGTH_FIELD_NUM_STROKE_COUNT (FIT_CAST(FIT_LENGTH_FIELD_NUM, 20))
#define FIT_LENGTH_FIELD_NUM_ZONE_COUNT (FIT_CAST(FIT_LENGTH_FIELD_NUM, 21))
#define FIT_LENGTH_FIELD_NUM_EVENT (FIT_CAST(FIT_LENGTH_FIELD_NUM, 0))
#define FIT_LENGTH_FIELD_NUM_EVENT_TYPE (FIT_CAST(FIT_LENGTH_FIELD_NUM, 1))
#define FIT_LENGTH_FIELD_NUM_SWIM_STROKE (FIT_CAST(FIT_LENGTH_FIELD_NUM, 7))
#define FIT_LENGTH_FIELD_NUM_AVG_SWIMMING_CADENCE (FIT_CAST(FIT_LENGTH_FIELD_NUM, 9))
#define FIT_LENGTH_FIELD_NUM_EVENT_GROUP (FIT_CAST(FIT_LENGTH_FIELD_NUM, 10))
#define FIT_LENGTH_FIELD_NUM_LENGTH_TYPE (FIT_CAST(FIT_LENGTH_FIELD_NUM, 12))

typedef enum
{
   FIT_LENGTH_MESG_TIMESTAMP,
   FIT_LENGTH_MESG_START_TIME,
   FIT_LENGTH_MESG_TOTAL_ELAPSED_TIME,
   FIT_LENGTH_MESG_TOTAL_TIMER_TIME,
   FIT_LENGTH_MESG_MESSAGE_INDEX,
   FIT_LENGTH_MESG_TOTAL_STROKES,
   FIT_LENGTH_MESG_AVG_SPEED,
   FIT_LENGTH_MESG_TOTAL_CALORIES,
   FIT_LENGTH_MESG_PLAYER_SCORE,
   FIT_LENGTH_MESG_OPPONENT_SCORE,
   FIT_LENGTH_MESG_STROKE_COUNT,
   FIT_LENGTH_MESG_ZONE_COUNT,
   FIT_LENGTH_MESG_EVENT,
   FIT_LENGTH_MESG_EVENT_TYPE,
   FIT_LENGTH_MESG_SWIM_STROKE,
   FIT_LENGTH_MESG_AVG_SWIMMING_CADENCE,
   FIT_LENGTH_MESG_EVENT_GROUP,
   FIT_LENGTH_MESG_LENGTH_TYPE,
   FIT_LENGTH_MESG_FIELDS
} FIT_LENGTH_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_LENGTH_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_LENGTH_MESG_DEF;

// record message

#define FIT_RECORD_MESG_SIZE                                                    99
#define FIT_RECORD_MESG_DEF_SIZE                                                149
#define FIT_RECORD_MESG_COMPRESSED_SPEED_DISTANCE_COUNT                         3
#define FIT_RECORD_MESG_SPEED_1S_COUNT                                          5

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_SINT32 position_lat; // 1 * semicircles + 0,
   FIT_SINT32 position_long; // 1 * semicircles + 0,
   FIT_UINT32 distance; // 100 * m + 0,
   FIT_SINT32 time_from_course; // 1000 * s + 0,
   FIT_UINT32 total_cycles; // 1 * cycles + 0,
   FIT_UINT32 accumulated_power; // 1 * watts + 0,
   FIT_UINT32 enhanced_speed; // 1000 * m/s + 0,
   FIT_UINT32 enhanced_altitude; // 5 * m + 500,
   FIT_UINT16 altitude; // 5 * m + 500,
   FIT_UINT16 speed; // 1000 * m/s + 0,
   FIT_UINT16 power; // 1 * watts + 0,
   FIT_SINT16 grade; // 100 * % + 0,
   FIT_UINT16 compressed_accumulated_power; // 1 * watts + 0,
   FIT_SINT16 vertical_speed; // 1000 * m/s + 0,
   FIT_UINT16 calories; // 1 * kcal + 0,
   FIT_UINT16 vertical_oscillation; // 10 * mm + 0,
   FIT_UINT16 stance_time_percent; // 100 * percent + 0,
   FIT_UINT16 stance_time; // 10 * ms + 0,
   FIT_UINT16 ball_speed; // 100 * m/s + 0,
   FIT_UINT16 cadence256; // 256 * rpm + 0, Log cadence and fractional cadence for backwards compatability
   FIT_UINT16 total_hemoglobin_conc; // 100 * g/dL + 0, Total saturated and unsaturated hemoglobin
   FIT_UINT16 total_hemoglobin_conc_min; // 100 * g/dL + 0, Min saturated and unsaturated hemoglobin
   FIT_UINT16 total_hemoglobin_conc_max; // 100 * g/dL + 0, Max saturated and unsaturated hemoglobin
   FIT_UINT16 saturated_hemoglobin_percent; // 10 * % + 0, Percentage of hemoglobin saturated with oxygen
   FIT_UINT16 saturated_hemoglobin_percent_min; // 10 * % + 0, Min percentage of hemoglobin saturated with oxygen
   FIT_UINT16 saturated_hemoglobin_percent_max; // 10 * % + 0, Max percentage of hemoglobin saturated with oxygen
   FIT_UINT8 heart_rate; // 1 * bpm + 0,
   FIT_UINT8 cadence; // 1 * rpm + 0,
   FIT_BYTE compressed_speed_distance[FIT_RECORD_MESG_COMPRESSED_SPEED_DISTANCE_COUNT]; //
   FIT_UINT8 resistance; // Relative. 0 is none 254 is Max.
   FIT_UINT8 cycle_length; // 100 * m + 0,
   FIT_SINT8 temperature; // 1 * C + 0,
   FIT_UINT8 speed_1s[FIT_RECORD_MESG_SPEED_1S_COUNT]; // 16 * m/s + 0, Speed at 1s intervals. Timestamp field indicates time of last array element.
   FIT_UINT8 cycles; // 1 * cycles + 0,
   FIT_LEFT_RIGHT_BALANCE left_right_balance; //
   FIT_UINT8 gps_accuracy; // 1 * m + 0,
   FIT_ACTIVITY_TYPE activity_type; //
   FIT_UINT8 left_torque_effectiveness; // 2 * percent + 0,
   FIT_UINT8 right_torque_effectiveness; // 2 * percent + 0,
   FIT_UINT8 left_pedal_smoothness; // 2 * percent + 0,
   FIT_UINT8 right_pedal_smoothness; // 2 * percent + 0,
   FIT_UINT8 combined_pedal_smoothness; // 2 * percent + 0,
   FIT_UINT8 time128; // 128 * s + 0,
   FIT_STROKE_TYPE stroke_type; //
   FIT_UINT8 zone; //
   FIT_UINT8 fractional_cadence; // 128 * rpm + 0,
   FIT_DEVICE_INDEX device_index; //
} FIT_RECORD_MESG;

typedef FIT_UINT8 FIT_RECORD_FIELD_NUM;

#define FIT_RECORD_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_RECORD_FIELD_NUM, 253))
#define FIT_RECORD_FIELD_NUM_POSITION_LAT (FIT_CAST(FIT_RECORD_FIELD_NUM, 0))
#define FIT_RECORD_FIELD_NUM_POSITION_LONG (FIT_CAST(FIT_RECORD_FIELD_NUM, 1))
#define FIT_RECORD_FIELD_NUM_DISTANCE (FIT_CAST(FIT_RECORD_FIELD_NUM, 5))
#define FIT_RECORD_FIELD_NUM_TIME_FROM_COURSE (FIT_CAST(FIT_RECORD_FIELD_NUM, 11))
#define FIT_RECORD_FIELD_NUM_TOTAL_CYCLES (FIT_CAST(FIT_RECORD_FIELD_NUM, 19))
#define FIT_RECORD_FIELD_NUM_ACCUMULATED_POWER (FIT_CAST(FIT_RECORD_FIELD_NUM, 29))
#define FIT_RECORD_FIELD_NUM_ENHANCED_SPEED (FIT_CAST(FIT_RECORD_FIELD_NUM, 73))
#define FIT_RECORD_FIELD_NUM_ENHANCED_ALTITUDE (FIT_CAST(FIT_RECORD_FIELD_NUM, 78))
#define FIT_RECORD_FIELD_NUM_ALTITUDE (FIT_CAST(FIT_RECORD_FIELD_NUM, 2))
#define FIT_RECORD_FIELD_NUM_SPEED (FIT_CAST(FIT_RECORD_FIELD_NUM, 6))
#define FIT_RECORD_FIELD_NUM_POWER (FIT_CAST(FIT_RECORD_FIELD_NUM, 7))
#define FIT_RECORD_FIELD_NUM_GRADE (FIT_CAST(FIT_RECORD_FIELD_NUM, 9))
#define FIT_RECORD_FIELD_NUM_COMPRESSED_ACCUMULATED_POWER (FIT_CAST(FIT_RECORD_FIELD_NUM, 28))
#define FIT_RECORD_FIELD_NUM_VERTICAL_SPEED (FIT_CAST(FIT_RECORD_FIELD_NUM, 32))
#define FIT_RECORD_FIELD_NUM_CALORIES (FIT_CAST(FIT_RECORD_FIELD_NUM, 33))
#define FIT_RECORD_FIELD_NUM_VERTICAL_OSCILLATION (FIT_CAST(FIT_RECORD_FIELD_NUM, 39))
#define FIT_RECORD_FIELD_NUM_STANCE_TIME_PERCENT (FIT_CAST(FIT_RECORD_FIELD_NUM, 40))
#define FIT_RECORD_FIELD_NUM_STANCE_TIME (FIT_CAST(FIT_RECORD_FIELD_NUM, 41))
#define FIT_RECORD_FIELD_NUM_BALL_SPEED (FIT_CAST(FIT_RECORD_FIELD_NUM, 51))
#define FIT_RECORD_FIELD_NUM_CADENCE256 (FIT_CAST(FIT_RECORD_FIELD_NUM, 52))
#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC (FIT_CAST(FIT_RECORD_FIELD_NUM, 54))
#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MIN (FIT_CAST(FIT_RECORD_FIELD_NUM, 55))
#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MAX (FIT_CAST(FIT_RECORD_FIELD_NUM, 56))
#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT (FIT_CAST(FIT_RECORD_FIELD_NUM, 57))
#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MIN (FIT_CAST(FIT_RECORD_FIELD_NUM, 58))
#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MAX (FIT_CAST(FIT_RECORD_FIELD_NUM, 59))
#define FIT_RECORD_FIELD_NUM_HEART_RATE (FIT_CAST(FIT_RECORD_FIELD_NUM, 3))
#define FIT_RECORD_FIELD_NUM_CADENCE (FIT_CAST(FIT_RECORD_FIELD_NUM, 4))
#define FIT_RECORD_FIELD_NUM_COMPRESSED_SPEED_DISTANCE (FIT_CAST(FIT_RECORD_FIELD_NUM, 8))
#define FIT_RECORD_FIELD_NUM_RESISTANCE (FIT_CAST(FIT_RECORD_FIELD_NUM, 10))
#define FIT_RECORD_FIELD_NUM_CYCLE_LENGTH (FIT_CAST(FIT_RECORD_FIELD_NUM, 12))
#define FIT_RECORD_FIELD_NUM_TEMPERATURE (FIT_CAST(FIT_RECORD_FIELD_NUM, 13))
#define FIT_RECORD_FIELD_NUM_SPEED_1S (FIT_CAST(FIT_RECORD_FIELD_NUM, 17))
#define FIT_RECORD_FIELD_NUM_CYCLES (FIT_CAST(FIT_RECORD_FIELD_NUM, 18))
#define FIT_RECORD_FIELD_NUM_LEFT_RIGHT_BALANCE (FIT_CAST(FIT_RECORD_FIELD_NUM, 30))
#define FIT_RECORD_FIELD_NUM_GPS_ACCURACY (FIT_CAST(FIT_RECORD_FIELD_NUM, 31))
#define FIT_RECORD_FIELD_NUM_ACTIVITY_TYPE (FIT_CAST(FIT_RECORD_FIELD_NUM, 42))
#define FIT_RECORD_FIELD_NUM_LEFT_TORQUE_EFFECTIVENESS (FIT_CAST(FIT_RECORD_FIELD_NUM, 43))
#define FIT_RECORD_FIELD_NUM_RIGHT_TORQUE_EFFECTIVENESS (FIT_CAST(FIT_RECORD_FIELD_NUM, 44))
#define FIT_RECORD_FIELD_NUM_LEFT_PEDAL_SMOOTHNESS (FIT_CAST(FIT_RECORD_FIELD_NUM, 45))
#define FIT_RECORD_FIELD_NUM_RIGHT_PEDAL_SMOOTHNESS (FIT_CAST(FIT_RECORD_FIELD_NUM, 46))
#define FIT_RECORD_FIELD_NUM_COMBINED_PEDAL_SMOOTHNESS (FIT_CAST(FIT_RECORD_FIELD_NUM, 47))
#define FIT_RECORD_FIELD_NUM_TIME128 (FIT_CAST(FIT_RECORD_FIELD_NUM, 48))
#define FIT_RECORD_FIELD_NUM_STROKE_TYPE (FIT_CAST(FIT_RECORD_FIELD_NUM, 49))
#define FIT_RECORD_FIELD_NUM_ZONE (FIT_CAST(FIT_RECORD_FIELD_NUM, 50))
#define FIT_RECORD_FIELD_NUM_FRACTIONAL_CADENCE (FIT_CAST(FIT_RECORD_FIELD_NUM, 53))
#define FIT_RECORD_FIELD_NUM_DEVICE_INDEX (FIT_CAST(FIT_RECORD_FIELD_NUM, 62))

typedef enum
{
   FIT_RECORD_MESG_TIMESTAMP,
   FIT_RECORD_MESG_POSITION_LAT,
   FIT_RECORD_MESG_POSITION_LONG,
   FIT_RECORD_MESG_DISTANCE,
   FIT_RECORD_MESG_TIME_FROM_COURSE,
   FIT_RECORD_MESG_TOTAL_CYCLES,
   FIT_RECORD_MESG_ACCUMULATED_POWER,
   FIT_RECORD_MESG_ENHANCED_SPEED,
   FIT_RECORD_MESG_ENHANCED_ALTITUDE,
   FIT_RECORD_MESG_ALTITUDE,
   FIT_RECORD_MESG_SPEED,
   FIT_RECORD_MESG_POWER,
   FIT_RECORD_MESG_GRADE,
   FIT_RECORD_MESG_COMPRESSED_ACCUMULATED_POWER,
   FIT_RECORD_MESG_VERTICAL_SPEED,
   FIT_RECORD_MESG_CALORIES,
   FIT_RECORD_MESG_VERTICAL_OSCILLATION,
   FIT_RECORD_MESG_STANCE_TIME_PERCENT,
   FIT_RECORD_MESG_STANCE_TIME,
   FIT_RECORD_MESG_BALL_SPEED,
   FIT_RECORD_MESG_CADENCE256,
   FIT_RECORD_MESG_TOTAL_HEMOGLOBIN_CONC,
   FIT_RECORD_MESG_TOTAL_HEMOGLOBIN_CONC_MIN,
   FIT_RECORD_MESG_TOTAL_HEMOGLOBIN_CONC_MAX,
   FIT_RECORD_MESG_SATURATED_HEMOGLOBIN_PERCENT,
   FIT_RECORD_MESG_SATURATED_HEMOGLOBIN_PERCENT_MIN,
   FIT_RECORD_MESG_SATURATED_HEMOGLOBIN_PERCENT_MAX,
   FIT_RECORD_MESG_HEART_RATE,
   FIT_RECORD_MESG_CADENCE,
   FIT_RECORD_MESG_COMPRESSED_SPEED_DISTANCE,
   FIT_RECORD_MESG_RESISTANCE,
   FIT_RECORD_MESG_CYCLE_LENGTH,
   FIT_RECORD_MESG_TEMPERATURE,
   FIT_RECORD_MESG_SPEED_1S,
   FIT_RECORD_MESG_CYCLES,
   FIT_RECORD_MESG_LEFT_RIGHT_BALANCE,
   FIT_RECORD_MESG_GPS_ACCURACY,
   FIT_RECORD_MESG_ACTIVITY_TYPE,
   FIT_RECORD_MESG_LEFT_TORQUE_EFFECTIVENESS,
   FIT_RECORD_MESG_RIGHT_TORQUE_EFFECTIVENESS,
   FIT_RECORD_MESG_LEFT_PEDAL_SMOOTHNESS,
   FIT_RECORD_MESG_RIGHT_PEDAL_SMOOTHNESS,
   FIT_RECORD_MESG_COMBINED_PEDAL_SMOOTHNESS,
   FIT_RECORD_MESG_TIME128,
   FIT_RECORD_MESG_STROKE_TYPE,
   FIT_RECORD_MESG_ZONE,
   FIT_RECORD_MESG_FRACTIONAL_CADENCE,
   FIT_RECORD_MESG_DEVICE_INDEX,
   FIT_RECORD_MESG_FIELDS
} FIT_RECORD_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_RECORD_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_RECORD_MESG_DEF;

// event message

#define FIT_EVENT_MESG_SIZE                                                     23
#define FIT_EVENT_MESG_DEF_SIZE                                                 47

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_UINT32 data; //
   FIT_UINT16 data16; //
   FIT_UINT16 score; // Do not populate directly. Autogenerated by decoder for sport_point subfield components
   FIT_UINT16 opponent_score; // Do not populate directly. Autogenerated by decoder for sport_point subfield components
   FIT_EVENT event; //
   FIT_EVENT_TYPE event_type; //
   FIT_UINT8 event_group; //
   FIT_UINT8Z front_gear_num; // Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost.
   FIT_UINT8Z front_gear; // Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth.
   FIT_UINT8Z rear_gear_num; // Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost.
   FIT_UINT8Z rear_gear; // Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth.
   FIT_RADAR_THREAT_LEVEL_TYPE radar_threat_level_max; // Do not populate directly. Autogenerated by decoder for threat_alert subfield components.
   FIT_UINT8 radar_threat_count; // Do not populate directly. Autogenerated by decoder for threat_alert subfield components.
} FIT_EVENT_MESG;

typedef FIT_UINT8 FIT_EVENT_FIELD_NUM;

#define FIT_EVENT_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_EVENT_FIELD_NUM, 253))
#define FIT_EVENT_FIELD_NUM_DATA (FIT_CAST(FIT_EVENT_FIELD_NUM, 3))
#define FIT_EVENT_FIELD_NUM_DATA16 (FIT_CAST(FIT_EVENT_FIELD_NUM, 2))
#define FIT_EVENT_FIELD_NUM_SCORE (FIT_CAST(FIT_EVENT_FIELD_NUM, 7))
#define FIT_EVENT_FIELD_NUM_OPPONENT_SCORE (FIT_CAST(FIT_EVENT_FIELD_NUM, 8))
#define FIT_EVENT_FIELD_NUM_EVENT (FIT_CAST(FIT_EVENT_FIELD_NUM, 0))
#define FIT_EVENT_FIELD_NUM_EVENT_TYPE (FIT_CAST(FIT_EVENT_FIELD_NUM, 1))
#define FIT_EVENT_FIELD_NUM_EVENT_GROUP (FIT_CAST(FIT_EVENT_FIELD_NUM, 4))
#define FIT_EVENT_FIELD_NUM_FRONT_GEAR_NUM (FIT_CAST(FIT_EVENT_FIELD_NUM, 9))
#define FIT_EVENT_FIELD_NUM_FRONT_GEAR (FIT_CAST(FIT_EVENT_FIELD_NUM, 10))
#define FIT_EVENT_FIELD_NUM_REAR_GEAR_NUM (FIT_CAST(FIT_EVENT_FIELD_NUM, 11))
#define FIT_EVENT_FIELD_NUM_REAR_GEAR (FIT_CAST(FIT_EVENT_FIELD_NUM, 12))
#define FIT_EVENT_FIELD_NUM_RADAR_THREAT_LEVEL_MAX (FIT_CAST(FIT_EVENT_FIELD_NUM, 21))
#define FIT_EVENT_FIELD_NUM_RADAR_THREAT_COUNT (FIT_CAST(FIT_EVENT_FIELD_NUM, 22))

typedef enum
{
   FIT_EVENT_MESG_TIMESTAMP,
   FIT_EVENT_MESG_DATA,
   FIT_EVENT_MESG_DATA16,
   FIT_EVENT_MESG_SCORE,
   FIT_EVENT_MESG_OPPONENT_SCORE,
   FIT_EVENT_MESG_EVENT,
   FIT_EVENT_MESG_EVENT_TYPE,
   FIT_EVENT_MESG_EVENT_GROUP,
   FIT_EVENT_MESG_FRONT_GEAR_NUM,
   FIT_EVENT_MESG_FRONT_GEAR,
   FIT_EVENT_MESG_REAR_GEAR_NUM,
   FIT_EVENT_MESG_REAR_GEAR,
   FIT_EVENT_MESG_RADAR_THREAT_LEVEL_MAX,
   FIT_EVENT_MESG_RADAR_THREAT_COUNT,
   FIT_EVENT_MESG_FIELDS
} FIT_EVENT_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_EVENT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_EVENT_MESG_DEF;

// device_info message

#define FIT_DEVICE_INFO_MESG_SIZE                                               51
#define FIT_DEVICE_INFO_MESG_DEF_SIZE                                           59
#define FIT_DEVICE_INFO_MESG_PRODUCT_NAME_COUNT                                 20
#define FIT_DEVICE_INFO_MESG_DESCRIPTOR_COUNT                                   1

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_UINT32Z serial_number; //
   FIT_UINT32 cum_operating_time; // 1 * s + 0, Reset by new battery or charge.
   FIT_STRING product_name[FIT_DEVICE_INFO_MESG_PRODUCT_NAME_COUNT]; // Optional free form string to indicate the devices name or model
   FIT_MANUFACTURER manufacturer; //
   FIT_UINT16 product; //
   FIT_UINT16 software_version; //
   FIT_UINT16 battery_voltage; // 256 * V + 0,
   FIT_UINT16Z ant_device_number; //
   FIT_DEVICE_INDEX device_index; //
   FIT_UINT8 device_type; //
   FIT_UINT8 hardware_version; //
   FIT_BATTERY_STATUS battery_status; //
   FIT_BODY_LOCATION sensor_position; // Indicates the location of the sensor
   FIT_STRING descriptor[FIT_DEVICE_INFO_MESG_DESCRIPTOR_COUNT]; // Used to describe the sensor or location
   FIT_UINT8Z ant_transmission_type; //
   FIT_ANT_NETWORK ant_network; //
   FIT_SOURCE_TYPE source_type; //
} FIT_DEVICE_INFO_MESG;

typedef FIT_UINT8 FIT_DEVICE_INFO_FIELD_NUM;

#define FIT_DEVICE_INFO_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 253))
#define FIT_DEVICE_INFO_FIELD_NUM_SERIAL_NUMBER (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 3))
#define FIT_DEVICE_INFO_FIELD_NUM_CUM_OPERATING_TIME (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 7))
#define FIT_DEVICE_INFO_FIELD_NUM_PRODUCT_NAME (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 27))
#define FIT_DEVICE_INFO_FIELD_NUM_MANUFACTURER (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 2))
#define FIT_DEVICE_INFO_FIELD_NUM_PRODUCT (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 4))
#define FIT_DEVICE_INFO_FIELD_NUM_SOFTWARE_VERSION (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 5))
#define FIT_DEVICE_INFO_FIELD_NUM_BATTERY_VOLTAGE (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 10))
#define FIT_DEVICE_INFO_FIELD_NUM_ANT_DEVICE_NUMBER (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 21))
#define FIT_DEVICE_INFO_FIELD_NUM_DEVICE_INDEX (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 0))
#define FIT_DEVICE_INFO_FIELD_NUM_DEVICE_TYPE (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 1))
#define FIT_DEVICE_INFO_FIELD_NUM_HARDWARE_VERSION (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 6))
#define FIT_DEVICE_INFO_FIELD_NUM_BATTERY_STATUS (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 11))
#define FIT_DEVICE_INFO_FIELD_NUM_SENSOR_POSITION (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 18))
#define FIT_DEVICE_INFO_FIELD_NUM_DESCRIPTOR (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 19))
#define FIT_DEVICE_INFO_FIELD_NUM_ANT_TRANSMISSION_TYPE (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 20))
#define FIT_DEVICE_INFO_FIELD_NUM_ANT_NETWORK (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 22))
#define FIT_DEVICE_INFO_FIELD_NUM_SOURCE_TYPE (FIT_CAST(FIT_DEVICE_INFO_FIELD_NUM, 25))

typedef enum
{
   FIT_DEVICE_INFO_MESG_TIMESTAMP,
   FIT_DEVICE_INFO_MESG_SERIAL_NUMBER,
   FIT_DEVICE_INFO_MESG_CUM_OPERATING_TIME,
   FIT_DEVICE_INFO_MESG_PRODUCT_NAME,
   FIT_DEVICE_INFO_MESG_MANUFACTURER,
   FIT_DEVICE_INFO_MESG_PRODUCT,
   FIT_DEVICE_INFO_MESG_SOFTWARE_VERSION,
   FIT_DEVICE_INFO_MESG_BATTERY_VOLTAGE,
   FIT_DEVICE_INFO_MESG_ANT_DEVICE_NUMBER,
   FIT_DEVICE_INFO_MESG_DEVICE_INDEX,
   FIT_DEVICE_INFO_MESG_DEVICE_TYPE,
   FIT_DEVICE_INFO_MESG_HARDWARE_VERSION,
   FIT_DEVICE_INFO_MESG_BATTERY_STATUS,
   FIT_DEVICE_INFO_MESG_SENSOR_POSITION,
   FIT_DEVICE_INFO_MESG_DESCRIPTOR,
   FIT_DEVICE_INFO_MESG_ANT_TRANSMISSION_TYPE,
   FIT_DEVICE_INFO_MESG_ANT_NETWORK,
   FIT_DEVICE_INFO_MESG_SOURCE_TYPE,
   FIT_DEVICE_INFO_MESG_FIELDS
} FIT_DEVICE_INFO_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_DEVICE_INFO_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_DEVICE_INFO_MESG_DEF;

// device_aux_battery_info message

#define FIT_DEVICE_AUX_BATTERY_INFO_MESG_SIZE                                   9
#define FIT_DEVICE_AUX_BATTERY_INFO_MESG_DEF_SIZE                               20

typedef struct
{
   FIT_DATE_TIME timestamp; //
   FIT_UINT16 battery_voltage; // 256 * V + 0,
   FIT_DEVICE_INDEX device_index; //
   FIT_BATTERY_STATUS battery_status; //
   FIT_UINT8 battery_identifier; //
} FIT_DEVICE_AUX_BATTERY_INFO_MESG;

typedef FIT_UINT8 FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM;

#define FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM, 253))
#define FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM_BATTERY_VOLTAGE (FIT_CAST(FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM, 1))
#define FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM_DEVICE_INDEX (FIT_CAST(FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM, 0))
#define FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM_BATTERY_STATUS (FIT_CAST(FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM, 2))
#define FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM_BATTERY_IDENTIFIER (FIT_CAST(FIT_DEVICE_AUX_BATTERY_INFO_FIELD_NUM, 3))

typedef enum
{
   FIT_DEVICE_AUX_BATTERY_INFO_MESG_TIMESTAMP,
   FIT_DEVICE_AUX_BATTERY_INFO_MESG_BATTERY_VOLTAGE,
   FIT_DEVICE_AUX_BATTERY_INFO_MESG_DEVICE_INDEX,
   FIT_DEVICE_AUX_BATTERY_INFO_MESG_BATTERY_STATUS,
   FIT_DEVICE_AUX_BATTERY_INFO_MESG_BATTERY_IDENTIFIER,
   FIT_DEVICE_AUX_BATTERY_INFO_MESG_FIELDS
} FIT_DEVICE_AUX_BATTERY_INFO_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_DEVICE_AUX_BATTERY_INFO_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_DEVICE_AUX_BATTERY_INFO_MESG_DEF;

// training_file message

#define FIT_TRAINING_FILE_MESG_SIZE                                             17
#define FIT_TRAINING_FILE_MESG_DEF_SIZE                                         23

typedef struct
{
   FIT_DATE_TIME timestamp; //
   FIT_UINT32Z serial_number; //
   FIT_DATE_TIME time_created; //
   FIT_MANUFACTURER manufacturer; //
   FIT_UINT16 product; //
   FIT_FILE type; //
} FIT_TRAINING_FILE_MESG;

typedef FIT_UINT8 FIT_TRAINING_FILE_FIELD_NUM;

#define FIT_TRAINING_FILE_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_TRAINING_FILE_FIELD_NUM, 253))
#define FIT_TRAINING_FILE_FIELD_NUM_SERIAL_NUMBER (FIT_CAST(FIT_TRAINING_FILE_FIELD_NUM, 3))
#define FIT_TRAINING_FILE_FIELD_NUM_TIME_CREATED (FIT_CAST(FIT_TRAINING_FILE_FIELD_NUM, 4))
#define FIT_TRAINING_FILE_FIELD_NUM_MANUFACTURER (FIT_CAST(FIT_TRAINING_FILE_FIELD_NUM, 1))
#define FIT_TRAINING_FILE_FIELD_NUM_PRODUCT (FIT_CAST(FIT_TRAINING_FILE_FIELD_NUM, 2))
#define FIT_TRAINING_FILE_FIELD_NUM_TYPE (FIT_CAST(FIT_TRAINING_FILE_FIELD_NUM, 0))

typedef enum
{
   FIT_TRAINING_FILE_MESG_TIMESTAMP,
   FIT_TRAINING_FILE_MESG_SERIAL_NUMBER,
   FIT_TRAINING_FILE_MESG_TIME_CREATED,
   FIT_TRAINING_FILE_MESG_MANUFACTURER,
   FIT_TRAINING_FILE_MESG_PRODUCT,
   FIT_TRAINING_FILE_MESG_TYPE,
   FIT_TRAINING_FILE_MESG_FIELDS
} FIT_TRAINING_FILE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_TRAINING_FILE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_TRAINING_FILE_MESG_DEF;

// weather_conditions message

#define FIT_WEATHER_CONDITIONS_MESG_SIZE                                        93
#define FIT_WEATHER_CONDITIONS_MESG_DEF_SIZE                                    53
#define FIT_WEATHER_CONDITIONS_MESG_LOCATION_COUNT                              64

typedef struct
{
   FIT_DATE_TIME timestamp; // time of update for current conditions, else forecast time
   FIT_STRING location[FIT_WEATHER_CONDITIONS_MESG_LOCATION_COUNT]; // string corresponding to GCS response location string
   FIT_DATE_TIME observed_at_time; //
   FIT_SINT32 observed_location_lat; // 1 * semicircles + 0,
   FIT_SINT32 observed_location_long; // 1 * semicircles + 0,
   FIT_UINT16 wind_direction; // 1 * degrees + 0,
   FIT_UINT16 wind_speed; // 1000 * m/s + 0,
   FIT_WEATHER_REPORT weather_report; // Current or forecast
   FIT_SINT8 temperature; // 1 * C + 0,
   FIT_WEATHER_STATUS condition; // Corresponds to GSC Response weatherIcon field
   FIT_UINT8 precipitation_probability; // range 0-100
   FIT_SINT8 temperature_feels_like; // 1 * C + 0, Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F
   FIT_UINT8 relative_humidity; //
   FIT_DAY_OF_WEEK day_of_week; //
   FIT_SINT8 high_temperature; // 1 * C + 0,
   FIT_SINT8 low_temperature; // 1 * C + 0,
} FIT_WEATHER_CONDITIONS_MESG;

typedef FIT_UINT8 FIT_WEATHER_CONDITIONS_FIELD_NUM;

#define FIT_WEATHER_CONDITIONS_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 253))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_LOCATION (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 8))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_AT_TIME (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 9))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LAT (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 10))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LONG (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 11))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_DIRECTION (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 3))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_SPEED (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 4))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WEATHER_REPORT (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 0))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 1))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_CONDITION (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 2))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_PRECIPITATION_PROBABILITY (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 5))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE_FEELS_LIKE (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 6))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_RELATIVE_HUMIDITY (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 7))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_DAY_OF_WEEK (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 12))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_HIGH_TEMPERATURE (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 13))
#define FIT_WEATHER_CONDITIONS_FIELD_NUM_LOW_TEMPERATURE (FIT_CAST(FIT_WEATHER_CONDITIONS_FIELD_NUM, 14))

typedef enum
{
   FIT_WEATHER_CONDITIONS_MESG_TIMESTAMP,
   FIT_WEATHER_CONDITIONS_MESG_LOCATION,
   FIT_WEATHER_CONDITIONS_MESG_OBSERVED_AT_TIME,
   FIT_WEATHER_CONDITIONS_MESG_OBSERVED_LOCATION_LAT,
   FIT_WEATHER_CONDITIONS_MESG_OBSERVED_LOCATION_LONG,
   FIT_WEATHER_CONDITIONS_MESG_WIND_DIRECTION,
   FIT_WEATHER_CONDITIONS_MESG_WIND_SPEED,
   FIT_WEATHER_CONDITIONS_MESG_WEATHER_REPORT,
   FIT_WEATHER_CONDITIONS_MESG_TEMPERATURE,
   FIT_WEATHER_CONDITIONS_MESG_CONDITION,
   FIT_WEATHER_CONDITIONS_MESG_PRECIPITATION_PROBABILITY,
   FIT_WEATHER_CONDITIONS_MESG_TEMPERATURE_FEELS_LIKE,
   FIT_WEATHER_CONDITIONS_MESG_RELATIVE_HUMIDITY,
   FIT_WEATHER_CONDITIONS_MESG_DAY_OF_WEEK,
   FIT_WEATHER_CONDITIONS_MESG_HIGH_TEMPERATURE,
   FIT_WEATHER_CONDITIONS_MESG_LOW_TEMPERATURE,
   FIT_WEATHER_CONDITIONS_MESG_FIELDS
} FIT_WEATHER_CONDITIONS_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_WEATHER_CONDITIONS_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_WEATHER_CONDITIONS_MESG_DEF;

// weather_alert message

#define FIT_WEATHER_ALERT_MESG_SIZE                                             26
#define FIT_WEATHER_ALERT_MESG_DEF_SIZE                                         23
#define FIT_WEATHER_ALERT_MESG_REPORT_ID_COUNT                                  12

typedef struct
{
   FIT_DATE_TIME timestamp; //
   FIT_STRING report_id[FIT_WEATHER_ALERT_MESG_REPORT_ID_COUNT]; // Unique identifier from GCS report ID string, length is 12
   FIT_DATE_TIME issue_time; // Time alert was issued
   FIT_DATE_TIME expire_time; // Time alert expires
   FIT_WEATHER_SEVERITY severity; // Warning, Watch, Advisory, Statement
   FIT_WEATHER_SEVERE_TYPE type; // Tornado, Severe Thunderstorm, etc.
} FIT_WEATHER_ALERT_MESG;

typedef FIT_UINT8 FIT_WEATHER_ALERT_FIELD_NUM;

#define FIT_WEATHER_ALERT_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_WEATHER_ALERT_FIELD_NUM, 253))
#define FIT_WEATHER_ALERT_FIELD_NUM_REPORT_ID (FIT_CAST(FIT_WEATHER_ALERT_FIELD_NUM, 0))
#define FIT_WEATHER_ALERT_FIELD_NUM_ISSUE_TIME (FIT_CAST(FIT_WEATHER_ALERT_FIELD_NUM, 1))
#define FIT_WEATHER_ALERT_FIELD_NUM_EXPIRE_TIME (FIT_CAST(FIT_WEATHER_ALERT_FIELD_NUM, 2))
#define FIT_WEATHER_ALERT_FIELD_NUM_SEVERITY (FIT_CAST(FIT_WEATHER_ALERT_FIELD_NUM, 3))
#define FIT_WEATHER_ALERT_FIELD_NUM_TYPE (FIT_CAST(FIT_WEATHER_ALERT_FIELD_NUM, 4))

typedef enum
{
   FIT_WEATHER_ALERT_MESG_TIMESTAMP,
   FIT_WEATHER_ALERT_MESG_REPORT_ID,
   FIT_WEATHER_ALERT_MESG_ISSUE_TIME,
   FIT_WEATHER_ALERT_MESG_EXPIRE_TIME,
   FIT_WEATHER_ALERT_MESG_SEVERITY,
   FIT_WEATHER_ALERT_MESG_TYPE,
   FIT_WEATHER_ALERT_MESG_FIELDS
} FIT_WEATHER_ALERT_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_WEATHER_ALERT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_WEATHER_ALERT_MESG_DEF;

// nmea_sentence message

#define FIT_NMEA_SENTENCE_MESG_SIZE                                             89
#define FIT_NMEA_SENTENCE_MESG_DEF_SIZE                                         14
#define FIT_NMEA_SENTENCE_MESG_SENTENCE_COUNT                                   83

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0, Timestamp message was output
   FIT_UINT16 timestamp_ms; // 1 * ms + 0, Fractional part of timestamp, added to timestamp
   FIT_STRING sentence[FIT_NMEA_SENTENCE_MESG_SENTENCE_COUNT]; // NMEA sentence
} FIT_NMEA_SENTENCE_MESG;

typedef FIT_UINT8 FIT_NMEA_SENTENCE_FIELD_NUM;

#define FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_NMEA_SENTENCE_FIELD_NUM, 253))
#define FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP_MS (FIT_CAST(FIT_NMEA_SENTENCE_FIELD_NUM, 0))
#define FIT_NMEA_SENTENCE_FIELD_NUM_SENTENCE (FIT_CAST(FIT_NMEA_SENTENCE_FIELD_NUM, 1))

typedef enum
{
   FIT_NMEA_SENTENCE_MESG_TIMESTAMP,
   FIT_NMEA_SENTENCE_MESG_TIMESTAMP_MS,
   FIT_NMEA_SENTENCE_MESG_SENTENCE,
   FIT_NMEA_SENTENCE_MESG_FIELDS
} FIT_NMEA_SENTENCE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_NMEA_SENTENCE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_NMEA_SENTENCE_MESG_DEF;

// aviation_attitude message

#define FIT_AVIATION_ATTITUDE_MESG_SIZE                                         26
#define FIT_AVIATION_ATTITUDE_MESG_DEF_SIZE                                     41
#define FIT_AVIATION_ATTITUDE_MESG_SYSTEM_TIME_COUNT                            1
#define FIT_AVIATION_ATTITUDE_MESG_PITCH_COUNT                                  1
#define FIT_AVIATION_ATTITUDE_MESG_ROLL_COUNT                                   1
#define FIT_AVIATION_ATTITUDE_MESG_ACCEL_LATERAL_COUNT                          1
#define FIT_AVIATION_ATTITUDE_MESG_ACCEL_NORMAL_COUNT                           1
#define FIT_AVIATION_ATTITUDE_MESG_TURN_RATE_COUNT                              1
#define FIT_AVIATION_ATTITUDE_MESG_TRACK_COUNT                                  1
#define FIT_AVIATION_ATTITUDE_MESG_VALIDITY_COUNT                               1
#define FIT_AVIATION_ATTITUDE_MESG_STAGE_COUNT                                  1
#define FIT_AVIATION_ATTITUDE_MESG_ATTITUDE_STAGE_COMPLETE_COUNT                1

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0, Timestamp message was output
   FIT_UINT32 system_time[FIT_AVIATION_ATTITUDE_MESG_SYSTEM_TIME_COUNT]; // 1 * ms + 0, System time associated with sample expressed in ms.
   FIT_UINT16 timestamp_ms; // 1 * ms + 0, Fractional part of timestamp, added to timestamp
   FIT_SINT16 pitch[FIT_AVIATION_ATTITUDE_MESG_PITCH_COUNT]; // 10430.38 * radians + 0, Range -PI/2 to +PI/2
   FIT_SINT16 roll[FIT_AVIATION_ATTITUDE_MESG_ROLL_COUNT]; // 10430.38 * radians + 0, Range -PI to +PI
   FIT_SINT16 accel_lateral[FIT_AVIATION_ATTITUDE_MESG_ACCEL_LATERAL_COUNT]; // 100 * m/s^2 + 0, Range -78.4 to +78.4 (-8 Gs to 8 Gs)
   FIT_SINT16 accel_normal[FIT_AVIATION_ATTITUDE_MESG_ACCEL_NORMAL_COUNT]; // 100 * m/s^2 + 0, Range -78.4 to +78.4 (-8 Gs to 8 Gs)
   FIT_SINT16 turn_rate[FIT_AVIATION_ATTITUDE_MESG_TURN_RATE_COUNT]; // 1024 * radians/second + 0, Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec)
   FIT_UINT16 track[FIT_AVIATION_ATTITUDE_MESG_TRACK_COUNT]; // 10430.38 * radians + 0, Track Angle/Heading Range 0 - 2pi
   FIT_ATTITUDE_VALIDITY validity[FIT_AVIATION_ATTITUDE_MESG_VALIDITY_COUNT]; //
   FIT_ATTITUDE_STAGE stage[FIT_AVIATION_ATTITUDE_MESG_STAGE_COUNT]; //
   FIT_UINT8 attitude_stage_complete[FIT_AVIATION_ATTITUDE_MESG_ATTITUDE_STAGE_COMPLETE_COUNT]; // 1 * % + 0, The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100
} FIT_AVIATION_ATTITUDE_MESG;

typedef FIT_UINT8 FIT_AVIATION_ATTITUDE_FIELD_NUM;

#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 253))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_SYSTEM_TIME (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 1))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP_MS (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 0))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_PITCH (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 2))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ROLL (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 3))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_LATERAL (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 4))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_NORMAL (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 5))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TURN_RATE (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 6))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TRACK (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 9))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_VALIDITY (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 10))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_STAGE (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 7))
#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ATTITUDE_STAGE_COMPLETE (FIT_CAST(FIT_AVIATION_ATTITUDE_FIELD_NUM, 8))

typedef enum
{
   FIT_AVIATION_ATTITUDE_MESG_TIMESTAMP,
   FIT_AVIATION_ATTITUDE_MESG_SYSTEM_TIME,
   FIT_AVIATION_ATTITUDE_MESG_TIMESTAMP_MS,
   FIT_AVIATION_ATTITUDE_MESG_PITCH,
   FIT_AVIATION_ATTITUDE_MESG_ROLL,
   FIT_AVIATION_ATTITUDE_MESG_ACCEL_LATERAL,
   FIT_AVIATION_ATTITUDE_MESG_ACCEL_NORMAL,
   FIT_AVIATION_ATTITUDE_MESG_TURN_RATE,
   FIT_AVIATION_ATTITUDE_MESG_TRACK,
   FIT_AVIATION_ATTITUDE_MESG_VALIDITY,
   FIT_AVIATION_ATTITUDE_MESG_STAGE,
   FIT_AVIATION_ATTITUDE_MESG_ATTITUDE_STAGE_COMPLETE,
   FIT_AVIATION_ATTITUDE_MESG_FIELDS
} FIT_AVIATION_ATTITUDE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_AVIATION_ATTITUDE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_AVIATION_ATTITUDE_MESG_DEF;

// video_title message

#define FIT_VIDEO_TITLE_MESG_SIZE                                               84
#define FIT_VIDEO_TITLE_MESG_DEF_SIZE                                           14
#define FIT_VIDEO_TITLE_MESG_TEXT_COUNT                                         80

typedef struct
{
   FIT_STRING text[FIT_VIDEO_TITLE_MESG_TEXT_COUNT]; //
   FIT_MESSAGE_INDEX message_index; // Long titles will be split into multiple parts
   FIT_UINT16 message_count; // Total number of title parts
} FIT_VIDEO_TITLE_MESG;

typedef FIT_UINT8 FIT_VIDEO_TITLE_FIELD_NUM;

#define FIT_VIDEO_TITLE_FIELD_NUM_TEXT (FIT_CAST(FIT_VIDEO_TITLE_FIELD_NUM, 1))
#define FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_VIDEO_TITLE_FIELD_NUM, 254))
#define FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_COUNT (FIT_CAST(FIT_VIDEO_TITLE_FIELD_NUM, 0))

typedef enum
{
   FIT_VIDEO_TITLE_MESG_TEXT,
   FIT_VIDEO_TITLE_MESG_MESSAGE_INDEX,
   FIT_VIDEO_TITLE_MESG_MESSAGE_COUNT,
   FIT_VIDEO_TITLE_MESG_FIELDS
} FIT_VIDEO_TITLE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_VIDEO_TITLE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_VIDEO_TITLE_MESG_DEF;

// video_description message

#define FIT_VIDEO_DESCRIPTION_MESG_SIZE                                         254
#define FIT_VIDEO_DESCRIPTION_MESG_DEF_SIZE                                     14
#define FIT_VIDEO_DESCRIPTION_MESG_TEXT_COUNT                                   250

typedef struct
{
   FIT_MESSAGE_INDEX message_index; // Long descriptions will be split into multiple parts
   FIT_UINT16 message_count; // Total number of description parts
   FIT_STRING text[FIT_VIDEO_DESCRIPTION_MESG_TEXT_COUNT]; //
} FIT_VIDEO_DESCRIPTION_MESG;

typedef FIT_UINT8 FIT_VIDEO_DESCRIPTION_FIELD_NUM;

#define FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_VIDEO_DESCRIPTION_FIELD_NUM, 254))
#define FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_COUNT (FIT_CAST(FIT_VIDEO_DESCRIPTION_FIELD_NUM, 0))
#define FIT_VIDEO_DESCRIPTION_FIELD_NUM_TEXT (FIT_CAST(FIT_VIDEO_DESCRIPTION_FIELD_NUM, 1))

typedef enum
{
   FIT_VIDEO_DESCRIPTION_MESG_MESSAGE_INDEX,
   FIT_VIDEO_DESCRIPTION_MESG_MESSAGE_COUNT,
   FIT_VIDEO_DESCRIPTION_MESG_TEXT,
   FIT_VIDEO_DESCRIPTION_MESG_FIELDS
} FIT_VIDEO_DESCRIPTION_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_VIDEO_DESCRIPTION_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_VIDEO_DESCRIPTION_MESG_DEF;

// set message

#define FIT_SET_MESG_SIZE                                                       2
#define FIT_SET_MESG_DEF_SIZE                                                   8

typedef struct
{
   FIT_FIT_BASE_UNIT weight_display_unit; //
} FIT_SET_MESG;

typedef FIT_UINT8 FIT_SET_FIELD_NUM;

#define FIT_SET_FIELD_NUM_WEIGHT_DISPLAY_UNIT (FIT_CAST(FIT_SET_FIELD_NUM, 9))

typedef enum
{
   FIT_SET_MESG_WEIGHT_DISPLAY_UNIT,
   FIT_SET_MESG_FIELDS
} FIT_SET_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SET_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SET_MESG_DEF;

// field_description message

#define FIT_FIELD_DESCRIPTION_MESG_SIZE                                         90
#define FIT_FIELD_DESCRIPTION_MESG_DEF_SIZE                                     35
#define FIT_FIELD_DESCRIPTION_MESG_FIELD_NAME_COUNT                             64
#define FIT_FIELD_DESCRIPTION_MESG_UNITS_COUNT                                  16

typedef struct
{
   FIT_STRING field_name[FIT_FIELD_DESCRIPTION_MESG_FIELD_NAME_COUNT]; //
   FIT_STRING units[FIT_FIELD_DESCRIPTION_MESG_UNITS_COUNT]; //
   FIT_FIT_BASE_UNIT fit_base_unit_id; //
   FIT_MESG_NUM native_mesg_num; //
   FIT_UINT8 developer_data_index; //
   FIT_UINT8 field_definition_number; //
   FIT_FIT_BASE_TYPE fit_base_type_id; //
   FIT_UINT8 scale; //
   FIT_SINT8 offset; //
   FIT_UINT8 native_field_num; //
} FIT_FIELD_DESCRIPTION_MESG;

typedef FIT_UINT8 FIT_FIELD_DESCRIPTION_FIELD_NUM;

#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_NAME (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 3))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 8))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_UNIT_ID (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 13))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_MESG_NUM (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 14))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 0))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 1))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 2))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_SCALE (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 6))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_OFFSET (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 7))
#define FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_FIELD_NUM (FIT_CAST(FIT_FIELD_DESCRIPTION_FIELD_NUM, 15))

typedef enum
{
   FIT_FIELD_DESCRIPTION_MESG_FIELD_NAME,
   FIT_FIELD_DESCRIPTION_MESG_UNITS,
   FIT_FIELD_DESCRIPTION_MESG_FIT_BASE_UNIT_ID,
   FIT_FIELD_DESCRIPTION_MESG_NATIVE_MESG_NUM,
   FIT_FIELD_DESCRIPTION_MESG_DEVELOPER_DATA_INDEX,
   FIT_FIELD_DESCRIPTION_MESG_FIELD_DEFINITION_NUMBER,
   FIT_FIELD_DESCRIPTION_MESG_FIT_BASE_TYPE_ID,
   FIT_FIELD_DESCRIPTION_MESG_SCALE,
   FIT_FIELD_DESCRIPTION_MESG_OFFSET,
   FIT_FIELD_DESCRIPTION_MESG_NATIVE_FIELD_NUM,
   FIT_FIELD_DESCRIPTION_MESG_FIELDS
} FIT_FIELD_DESCRIPTION_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_FIELD_DESCRIPTION_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_FIELD_DESCRIPTION_MESG_DEF;

// developer_data_id message

#define FIT_DEVELOPER_DATA_ID_MESG_SIZE                                         39
#define FIT_DEVELOPER_DATA_ID_MESG_DEF_SIZE                                     20
#define FIT_DEVELOPER_DATA_ID_MESG_DEVELOPER_ID_COUNT                           16
#define FIT_DEVELOPER_DATA_ID_MESG_APPLICATION_ID_COUNT                         16

typedef struct
{
   FIT_BYTE developer_id[FIT_DEVELOPER_DATA_ID_MESG_DEVELOPER_ID_COUNT]; //
   FIT_BYTE application_id[FIT_DEVELOPER_DATA_ID_MESG_APPLICATION_ID_COUNT]; //
   FIT_UINT32 application_version; //
   FIT_MANUFACTURER manufacturer_id; //
   FIT_UINT8 developer_data_index; //
} FIT_DEVELOPER_DATA_ID_MESG;

typedef FIT_UINT8 FIT_DEVELOPER_DATA_ID_FIELD_NUM;

#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_ID (FIT_CAST(FIT_DEVELOPER_DATA_ID_FIELD_NUM, 0))
#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_ID (FIT_CAST(FIT_DEVELOPER_DATA_ID_FIELD_NUM, 1))
#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_VERSION (FIT_CAST(FIT_DEVELOPER_DATA_ID_FIELD_NUM, 4))
#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_MANUFACTURER_ID (FIT_CAST(FIT_DEVELOPER_DATA_ID_FIELD_NUM, 2))
#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_DATA_INDEX (FIT_CAST(FIT_DEVELOPER_DATA_ID_FIELD_NUM, 3))

typedef enum
{
   FIT_DEVELOPER_DATA_ID_MESG_DEVELOPER_ID,
   FIT_DEVELOPER_DATA_ID_MESG_APPLICATION_ID,
   FIT_DEVELOPER_DATA_ID_MESG_APPLICATION_VERSION,
   FIT_DEVELOPER_DATA_ID_MESG_MANUFACTURER_ID,
   FIT_DEVELOPER_DATA_ID_MESG_DEVELOPER_DATA_INDEX,
   FIT_DEVELOPER_DATA_ID_MESG_FIELDS
} FIT_DEVELOPER_DATA_ID_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_DEVELOPER_DATA_ID_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_DEVELOPER_DATA_ID_MESG_DEF;

// course message

#define FIT_COURSE_MESG_SIZE                                                    22
#define FIT_COURSE_MESG_DEF_SIZE                                                17
#define FIT_COURSE_MESG_NAME_COUNT                                              16

typedef struct
{
   FIT_STRING name[FIT_COURSE_MESG_NAME_COUNT]; //
   FIT_COURSE_CAPABILITIES capabilities; //
   FIT_SPORT sport; //
   FIT_SUB_SPORT sub_sport; //
} FIT_COURSE_MESG;

typedef FIT_UINT8 FIT_COURSE_FIELD_NUM;

#define FIT_COURSE_FIELD_NUM_NAME (FIT_CAST(FIT_COURSE_FIELD_NUM, 5))
#define FIT_COURSE_FIELD_NUM_CAPABILITIES (FIT_CAST(FIT_COURSE_FIELD_NUM, 6))
#define FIT_COURSE_FIELD_NUM_SPORT (FIT_CAST(FIT_COURSE_FIELD_NUM, 4))
#define FIT_COURSE_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_COURSE_FIELD_NUM, 7))

typedef enum
{
   FIT_COURSE_MESG_NAME,
   FIT_COURSE_MESG_CAPABILITIES,
   FIT_COURSE_MESG_SPORT,
   FIT_COURSE_MESG_SUB_SPORT,
   FIT_COURSE_MESG_FIELDS
} FIT_COURSE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_COURSE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_COURSE_MESG_DEF;

// course_point message

#define FIT_COURSE_POINT_MESG_SIZE                                              36
#define FIT_COURSE_POINT_MESG_DEF_SIZE                                          29
#define FIT_COURSE_POINT_MESG_NAME_COUNT                                        16

typedef struct
{
   FIT_DATE_TIME timestamp; //
   FIT_SINT32 position_lat; // 1 * semicircles + 0,
   FIT_SINT32 position_long; // 1 * semicircles + 0,
   FIT_UINT32 distance; // 100 * m + 0,
   FIT_STRING name[FIT_COURSE_POINT_MESG_NAME_COUNT]; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_COURSE_POINT type; //
   FIT_BOOL favorite; //
} FIT_COURSE_POINT_MESG;

typedef FIT_UINT8 FIT_COURSE_POINT_FIELD_NUM;

#define FIT_COURSE_POINT_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_COURSE_POINT_FIELD_NUM, 1))
#define FIT_COURSE_POINT_FIELD_NUM_POSITION_LAT (FIT_CAST(FIT_COURSE_POINT_FIELD_NUM, 2))
#define FIT_COURSE_POINT_FIELD_NUM_POSITION_LONG (FIT_CAST(FIT_COURSE_POINT_FIELD_NUM, 3))
#define FIT_COURSE_POINT_FIELD_NUM_DISTANCE (FIT_CAST(FIT_COURSE_POINT_FIELD_NUM, 4))
#define FIT_COURSE_POINT_FIELD_NUM_NAME (FIT_CAST(FIT_COURSE_POINT_FIELD_NUM, 6))
#define FIT_COURSE_POINT_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_COURSE_POINT_FIELD_NUM, 254))
#define FIT_COURSE_POINT_FIELD_NUM_TYPE (FIT_CAST(FIT_COURSE_POINT_FIELD_NUM, 5))
#define FIT_COURSE_POINT_FIELD_NUM_FAVORITE (FIT_CAST(FIT_COURSE_POINT_FIELD_NUM, 8))

typedef enum
{
   FIT_COURSE_POINT_MESG_TIMESTAMP,
   FIT_COURSE_POINT_MESG_POSITION_LAT,
   FIT_COURSE_POINT_MESG_POSITION_LONG,
   FIT_COURSE_POINT_MESG_DISTANCE,
   FIT_COURSE_POINT_MESG_NAME,
   FIT_COURSE_POINT_MESG_MESSAGE_INDEX,
   FIT_COURSE_POINT_MESG_TYPE,
   FIT_COURSE_POINT_MESG_FAVORITE,
   FIT_COURSE_POINT_MESG_FIELDS
} FIT_COURSE_POINT_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_COURSE_POINT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_COURSE_POINT_MESG_DEF;

// segment_id message

#define FIT_SEGMENT_ID_MESG_SIZE                                                15
#define FIT_SEGMENT_ID_MESG_DEF_SIZE                                            32
#define FIT_SEGMENT_ID_MESG_NAME_COUNT                                          1
#define FIT_SEGMENT_ID_MESG_UUID_COUNT                                          1

typedef struct
{
   FIT_UINT32 user_profile_primary_key; // Primary key of the user that created the segment
   FIT_UINT32 device_id; // ID of the device that created the segment
   FIT_STRING name[FIT_SEGMENT_ID_MESG_NAME_COUNT]; // Friendly name assigned to segment
   FIT_STRING uuid[FIT_SEGMENT_ID_MESG_UUID_COUNT]; // UUID of the segment
   FIT_SPORT sport; // Sport associated with the segment
   FIT_BOOL enabled; // Segment enabled for evaluation
   FIT_UINT8 default_race_leader; // Index for the Leader Board entry selected as the default race participant
   FIT_SEGMENT_DELETE_STATUS delete_status; // Indicates if any segments should be deleted
   FIT_SEGMENT_SELECTION_TYPE selection_type; // Indicates how the segment was selected to be sent to the device
} FIT_SEGMENT_ID_MESG;

typedef FIT_UINT8 FIT_SEGMENT_ID_FIELD_NUM;

#define FIT_SEGMENT_ID_FIELD_NUM_USER_PROFILE_PRIMARY_KEY (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 4))
#define FIT_SEGMENT_ID_FIELD_NUM_DEVICE_ID (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 5))
#define FIT_SEGMENT_ID_FIELD_NUM_NAME (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 0))
#define FIT_SEGMENT_ID_FIELD_NUM_UUID (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 1))
#define FIT_SEGMENT_ID_FIELD_NUM_SPORT (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 2))
#define FIT_SEGMENT_ID_FIELD_NUM_ENABLED (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 3))
#define FIT_SEGMENT_ID_FIELD_NUM_DEFAULT_RACE_LEADER (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 6))
#define FIT_SEGMENT_ID_FIELD_NUM_DELETE_STATUS (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 7))
#define FIT_SEGMENT_ID_FIELD_NUM_SELECTION_TYPE (FIT_CAST(FIT_SEGMENT_ID_FIELD_NUM, 8))

typedef enum
{
   FIT_SEGMENT_ID_MESG_USER_PROFILE_PRIMARY_KEY,
   FIT_SEGMENT_ID_MESG_DEVICE_ID,
   FIT_SEGMENT_ID_MESG_NAME,
   FIT_SEGMENT_ID_MESG_UUID,
   FIT_SEGMENT_ID_MESG_SPORT,
   FIT_SEGMENT_ID_MESG_ENABLED,
   FIT_SEGMENT_ID_MESG_DEFAULT_RACE_LEADER,
   FIT_SEGMENT_ID_MESG_DELETE_STATUS,
   FIT_SEGMENT_ID_MESG_SELECTION_TYPE,
   FIT_SEGMENT_ID_MESG_FIELDS
} FIT_SEGMENT_ID_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SEGMENT_ID_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SEGMENT_ID_MESG_DEF;

// segment_leaderboard_entry message

#define FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_SIZE                                 16
#define FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_DEF_SIZE                             23
#define FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_NAME_COUNT                           1

typedef struct
{
   FIT_UINT32 group_primary_key; // Primary user ID of this leader
   FIT_UINT32 activity_id; // ID of the activity associated with this leader time
   FIT_UINT32 segment_time; // 1000 * s + 0, Segment Time (includes pauses)
   FIT_MESSAGE_INDEX message_index; //
   FIT_STRING name[FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_NAME_COUNT]; // Friendly name assigned to leader
   FIT_SEGMENT_LEADERBOARD_TYPE type; // Leader classification
} FIT_SEGMENT_LEADERBOARD_ENTRY_MESG;

typedef FIT_UINT8 FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM;

#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_GROUP_PRIMARY_KEY (FIT_CAST(FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM, 2))
#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_ACTIVITY_ID (FIT_CAST(FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM, 3))
#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_SEGMENT_TIME (FIT_CAST(FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM, 4))
#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM, 254))
#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_NAME (FIT_CAST(FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM, 0))
#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_TYPE (FIT_CAST(FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM, 1))

typedef enum
{
   FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_GROUP_PRIMARY_KEY,
   FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_ACTIVITY_ID,
   FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_SEGMENT_TIME,
   FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_MESSAGE_INDEX,
   FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_NAME,
   FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_TYPE,
   FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_FIELDS
} FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_DEF;

// segment_point message

#define FIT_SEGMENT_POINT_MESG_SIZE                                             20
#define FIT_SEGMENT_POINT_MESG_DEF_SIZE                                         23
#define FIT_SEGMENT_POINT_MESG_LEADER_TIME_COUNT                                1

typedef struct
{
   FIT_SINT32 position_lat; // 1 * semicircles + 0,
   FIT_SINT32 position_long; // 1 * semicircles + 0,
   FIT_UINT32 distance; // 100 * m + 0, Accumulated distance along the segment at the described point
   FIT_UINT32 leader_time[FIT_SEGMENT_POINT_MESG_LEADER_TIME_COUNT]; // 1000 * s + 0, Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment.
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 altitude; // 5 * m + 500, Accumulated altitude along the segment at the described point
} FIT_SEGMENT_POINT_MESG;

typedef FIT_UINT8 FIT_SEGMENT_POINT_FIELD_NUM;

#define FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LAT (FIT_CAST(FIT_SEGMENT_POINT_FIELD_NUM, 1))
#define FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LONG (FIT_CAST(FIT_SEGMENT_POINT_FIELD_NUM, 2))
#define FIT_SEGMENT_POINT_FIELD_NUM_DISTANCE (FIT_CAST(FIT_SEGMENT_POINT_FIELD_NUM, 3))
#define FIT_SEGMENT_POINT_FIELD_NUM_LEADER_TIME (FIT_CAST(FIT_SEGMENT_POINT_FIELD_NUM, 5))
#define FIT_SEGMENT_POINT_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_SEGMENT_POINT_FIELD_NUM, 254))
#define FIT_SEGMENT_POINT_FIELD_NUM_ALTITUDE (FIT_CAST(FIT_SEGMENT_POINT_FIELD_NUM, 4))

typedef enum
{
   FIT_SEGMENT_POINT_MESG_POSITION_LAT,
   FIT_SEGMENT_POINT_MESG_POSITION_LONG,
   FIT_SEGMENT_POINT_MESG_DISTANCE,
   FIT_SEGMENT_POINT_MESG_LEADER_TIME,
   FIT_SEGMENT_POINT_MESG_MESSAGE_INDEX,
   FIT_SEGMENT_POINT_MESG_ALTITUDE,
   FIT_SEGMENT_POINT_MESG_FIELDS
} FIT_SEGMENT_POINT_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SEGMENT_POINT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SEGMENT_POINT_MESG_DEF;

// segment_lap message

#define FIT_SEGMENT_LAP_MESG_SIZE                                               210
#define FIT_SEGMENT_LAP_MESG_DEF_SIZE                                           224
#define FIT_SEGMENT_LAP_MESG_NAME_COUNT                                         16
#define FIT_SEGMENT_LAP_MESG_TIME_IN_HR_ZONE_COUNT                              1
#define FIT_SEGMENT_LAP_MESG_TIME_IN_SPEED_ZONE_COUNT                           1
#define FIT_SEGMENT_LAP_MESG_TIME_IN_CADENCE_ZONE_COUNT                         1
#define FIT_SEGMENT_LAP_MESG_TIME_IN_POWER_ZONE_COUNT                           1
#define FIT_SEGMENT_LAP_MESG_UUID_COUNT                                         33

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0, Lap end time.
   FIT_DATE_TIME start_time; //
   FIT_SINT32 start_position_lat; // 1 * semicircles + 0,
   FIT_SINT32 start_position_long; // 1 * semicircles + 0,
   FIT_SINT32 end_position_lat; // 1 * semicircles + 0,
   FIT_SINT32 end_position_long; // 1 * semicircles + 0,
   FIT_UINT32 total_elapsed_time; // 1000 * s + 0, Time (includes pauses)
   FIT_UINT32 total_timer_time; // 1000 * s + 0, Timer Time (excludes pauses)
   FIT_UINT32 total_distance; // 100 * m + 0,
   FIT_UINT32 total_cycles; // 1 * cycles + 0,
   FIT_SINT32 nec_lat; // 1 * semicircles + 0, North east corner latitude.
   FIT_SINT32 nec_long; // 1 * semicircles + 0, North east corner longitude.
   FIT_SINT32 swc_lat; // 1 * semicircles + 0, South west corner latitude.
   FIT_SINT32 swc_long; // 1 * semicircles + 0, South west corner latitude.
   FIT_STRING name[FIT_SEGMENT_LAP_MESG_NAME_COUNT]; //
   FIT_UINT32 total_work; // 1 * J + 0,
   FIT_UINT32 total_moving_time; // 1000 * s + 0,
   FIT_UINT32 time_in_hr_zone[FIT_SEGMENT_LAP_MESG_TIME_IN_HR_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_speed_zone[FIT_SEGMENT_LAP_MESG_TIME_IN_SPEED_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_cadence_zone[FIT_SEGMENT_LAP_MESG_TIME_IN_CADENCE_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 time_in_power_zone[FIT_SEGMENT_LAP_MESG_TIME_IN_POWER_ZONE_COUNT]; // 1000 * s + 0,
   FIT_UINT32 active_time; // 1000 * s + 0,
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 total_calories; // 1 * kcal + 0,
   FIT_UINT16 total_fat_calories; // 1 * kcal + 0, If New Leaf
   FIT_UINT16 avg_speed; // 1000 * m/s + 0,
   FIT_UINT16 max_speed; // 1000 * m/s + 0,
   FIT_UINT16 avg_power; // 1 * watts + 0, total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time
   FIT_UINT16 max_power; // 1 * watts + 0,
   FIT_UINT16 total_ascent; // 1 * m + 0,
   FIT_UINT16 total_descent; // 1 * m + 0,
   FIT_UINT16 normalized_power; // 1 * watts + 0,
   FIT_LEFT_RIGHT_BALANCE_100 left_right_balance; //
   FIT_UINT16 avg_altitude; // 5 * m + 500,
   FIT_UINT16 max_altitude; // 5 * m + 500,
   FIT_SINT16 avg_grade; // 100 * % + 0,
   FIT_SINT16 avg_pos_grade; // 100 * % + 0,
   FIT_SINT16 avg_neg_grade; // 100 * % + 0,
   FIT_SINT16 max_pos_grade; // 100 * % + 0,
   FIT_SINT16 max_neg_grade; // 100 * % + 0,
   FIT_SINT16 avg_pos_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 avg_neg_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 max_pos_vertical_speed; // 1000 * m/s + 0,
   FIT_SINT16 max_neg_vertical_speed; // 1000 * m/s + 0,
   FIT_UINT16 repetition_num; //
   FIT_UINT16 min_altitude; // 5 * m + 500,
   FIT_MESSAGE_INDEX wkt_step_index; //
   FIT_UINT16 front_gear_shift_count; //
   FIT_UINT16 rear_gear_shift_count; //
   FIT_EVENT event; //
   FIT_EVENT_TYPE event_type; //
   FIT_UINT8 avg_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 max_heart_rate; // 1 * bpm + 0,
   FIT_UINT8 avg_cadence; // 1 * rpm + 0, total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time
   FIT_UINT8 max_cadence; // 1 * rpm + 0,
   FIT_SPORT sport; //
   FIT_UINT8 event_group; //
   FIT_SUB_SPORT sub_sport; //
   FIT_UINT8 gps_accuracy; // 1 * m + 0,
   FIT_SINT8 avg_temperature; // 1 * C + 0,
   FIT_SINT8 max_temperature; // 1 * C + 0,
   FIT_UINT8 min_heart_rate; // 1 * bpm + 0,
   FIT_SPORT_EVENT sport_event; //
   FIT_UINT8 avg_left_torque_effectiveness; // 2 * percent + 0,
   FIT_UINT8 avg_right_torque_effectiveness; // 2 * percent + 0,
   FIT_UINT8 avg_left_pedal_smoothness; // 2 * percent + 0,
   FIT_UINT8 avg_right_pedal_smoothness; // 2 * percent + 0,
   FIT_UINT8 avg_combined_pedal_smoothness; // 2 * percent + 0,
   FIT_SEGMENT_LAP_STATUS status; //
   FIT_STRING uuid[FIT_SEGMENT_LAP_MESG_UUID_COUNT]; //
   FIT_UINT8 avg_fractional_cadence; // 128 * rpm + 0, fractional part of the avg_cadence
   FIT_UINT8 max_fractional_cadence; // 128 * rpm + 0, fractional part of the max_cadence
   FIT_UINT8 total_fractional_cycles; // 128 * cycles + 0, fractional part of the total_cycles
} FIT_SEGMENT_LAP_MESG;

typedef FIT_UINT8 FIT_SEGMENT_LAP_FIELD_NUM;

#define FIT_SEGMENT_LAP_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 253))
#define FIT_SEGMENT_LAP_FIELD_NUM_START_TIME (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 2))
#define FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LAT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 3))
#define FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LONG (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 4))
#define FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LAT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 5))
#define FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LONG (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 6))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 7))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_TIMER_TIME (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 8))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DISTANCE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 9))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CYCLES (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 10))
#define FIT_SEGMENT_LAP_FIELD_NUM_NEC_LAT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 25))
#define FIT_SEGMENT_LAP_FIELD_NUM_NEC_LONG (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 26))
#define FIT_SEGMENT_LAP_FIELD_NUM_SWC_LAT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 27))
#define FIT_SEGMENT_LAP_FIELD_NUM_SWC_LONG (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 28))
#define FIT_SEGMENT_LAP_FIELD_NUM_NAME (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 29))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_WORK (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 33))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_MOVING_TIME (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 44))
#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_HR_ZONE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 49))
#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 50))
#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 51))
#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 52))
#define FIT_SEGMENT_LAP_FIELD_NUM_ACTIVE_TIME (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 56))
#define FIT_SEGMENT_LAP_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 254))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CALORIES (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 11))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 12))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_SPEED (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 13))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_SPEED (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 14))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POWER (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 19))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POWER (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 20))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ASCENT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 21))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DESCENT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 22))
#define FIT_SEGMENT_LAP_FIELD_NUM_NORMALIZED_POWER (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 30))
#define FIT_SEGMENT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 31))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_ALTITUDE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 34))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_ALTITUDE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 35))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_GRADE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 37))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_GRADE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 38))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_GRADE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 39))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_GRADE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 40))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_GRADE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 41))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 45))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 46))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 47))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 48))
#define FIT_SEGMENT_LAP_FIELD_NUM_REPETITION_NUM (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 53))
#define FIT_SEGMENT_LAP_FIELD_NUM_MIN_ALTITUDE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 54))
#define FIT_SEGMENT_LAP_FIELD_NUM_WKT_STEP_INDEX (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 57))
#define FIT_SEGMENT_LAP_FIELD_NUM_FRONT_GEAR_SHIFT_COUNT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 69))
#define FIT_SEGMENT_LAP_FIELD_NUM_REAR_GEAR_SHIFT_COUNT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 70))
#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 0))
#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT_TYPE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 1))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_HEART_RATE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 15))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_HEART_RATE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 16))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_CADENCE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 17))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_CADENCE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 18))
#define FIT_SEGMENT_LAP_FIELD_NUM_SPORT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 23))
#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT_GROUP (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 24))
#define FIT_SEGMENT_LAP_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 32))
#define FIT_SEGMENT_LAP_FIELD_NUM_GPS_ACCURACY (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 36))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_TEMPERATURE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 42))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_TEMPERATURE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 43))
#define FIT_SEGMENT_LAP_FIELD_NUM_MIN_HEART_RATE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 55))
#define FIT_SEGMENT_LAP_FIELD_NUM_SPORT_EVENT (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 58))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_TORQUE_EFFECTIVENESS (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 59))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_TORQUE_EFFECTIVENESS (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 60))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_PEDAL_SMOOTHNESS (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 61))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_PEDAL_SMOOTHNESS (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 62))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_COMBINED_PEDAL_SMOOTHNESS (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 63))
#define FIT_SEGMENT_LAP_FIELD_NUM_STATUS (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 64))
#define FIT_SEGMENT_LAP_FIELD_NUM_UUID (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 65))
#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 66))
#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 67))
#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES (FIT_CAST(FIT_SEGMENT_LAP_FIELD_NUM, 68))

typedef enum
{
   FIT_SEGMENT_LAP_MESG_TIMESTAMP,
   FIT_SEGMENT_LAP_MESG_START_TIME,
   FIT_SEGMENT_LAP_MESG_START_POSITION_LAT,
   FIT_SEGMENT_LAP_MESG_START_POSITION_LONG,
   FIT_SEGMENT_LAP_MESG_END_POSITION_LAT,
   FIT_SEGMENT_LAP_MESG_END_POSITION_LONG,
   FIT_SEGMENT_LAP_MESG_TOTAL_ELAPSED_TIME,
   FIT_SEGMENT_LAP_MESG_TOTAL_TIMER_TIME,
   FIT_SEGMENT_LAP_MESG_TOTAL_DISTANCE,
   FIT_SEGMENT_LAP_MESG_TOTAL_CYCLES,
   FIT_SEGMENT_LAP_MESG_NEC_LAT,
   FIT_SEGMENT_LAP_MESG_NEC_LONG,
   FIT_SEGMENT_LAP_MESG_SWC_LAT,
   FIT_SEGMENT_LAP_MESG_SWC_LONG,
   FIT_SEGMENT_LAP_MESG_NAME,
   FIT_SEGMENT_LAP_MESG_TOTAL_WORK,
   FIT_SEGMENT_LAP_MESG_TOTAL_MOVING_TIME,
   FIT_SEGMENT_LAP_MESG_TIME_IN_HR_ZONE,
   FIT_SEGMENT_LAP_MESG_TIME_IN_SPEED_ZONE,
   FIT_SEGMENT_LAP_MESG_TIME_IN_CADENCE_ZONE,
   FIT_SEGMENT_LAP_MESG_TIME_IN_POWER_ZONE,
   FIT_SEGMENT_LAP_MESG_ACTIVE_TIME,
   FIT_SEGMENT_LAP_MESG_MESSAGE_INDEX,
   FIT_SEGMENT_LAP_MESG_TOTAL_CALORIES,
   FIT_SEGMENT_LAP_MESG_TOTAL_FAT_CALORIES,
   FIT_SEGMENT_LAP_MESG_AVG_SPEED,
   FIT_SEGMENT_LAP_MESG_MAX_SPEED,
   FIT_SEGMENT_LAP_MESG_AVG_POWER,
   FIT_SEGMENT_LAP_MESG_MAX_POWER,
   FIT_SEGMENT_LAP_MESG_TOTAL_ASCENT,
   FIT_SEGMENT_LAP_MESG_TOTAL_DESCENT,
   FIT_SEGMENT_LAP_MESG_NORMALIZED_POWER,
   FIT_SEGMENT_LAP_MESG_LEFT_RIGHT_BALANCE,
   FIT_SEGMENT_LAP_MESG_AVG_ALTITUDE,
   FIT_SEGMENT_LAP_MESG_MAX_ALTITUDE,
   FIT_SEGMENT_LAP_MESG_AVG_GRADE,
   FIT_SEGMENT_LAP_MESG_AVG_POS_GRADE,
   FIT_SEGMENT_LAP_MESG_AVG_NEG_GRADE,
   FIT_SEGMENT_LAP_MESG_MAX_POS_GRADE,
   FIT_SEGMENT_LAP_MESG_MAX_NEG_GRADE,
   FIT_SEGMENT_LAP_MESG_AVG_POS_VERTICAL_SPEED,
   FIT_SEGMENT_LAP_MESG_AVG_NEG_VERTICAL_SPEED,
   FIT_SEGMENT_LAP_MESG_MAX_POS_VERTICAL_SPEED,
   FIT_SEGMENT_LAP_MESG_MAX_NEG_VERTICAL_SPEED,
   FIT_SEGMENT_LAP_MESG_REPETITION_NUM,
   FIT_SEGMENT_LAP_MESG_MIN_ALTITUDE,
   FIT_SEGMENT_LAP_MESG_WKT_STEP_INDEX,
   FIT_SEGMENT_LAP_MESG_FRONT_GEAR_SHIFT_COUNT,
   FIT_SEGMENT_LAP_MESG_REAR_GEAR_SHIFT_COUNT,
   FIT_SEGMENT_LAP_MESG_EVENT,
   FIT_SEGMENT_LAP_MESG_EVENT_TYPE,
   FIT_SEGMENT_LAP_MESG_AVG_HEART_RATE,
   FIT_SEGMENT_LAP_MESG_MAX_HEART_RATE,
   FIT_SEGMENT_LAP_MESG_AVG_CADENCE,
   FIT_SEGMENT_LAP_MESG_MAX_CADENCE,
   FIT_SEGMENT_LAP_MESG_SPORT,
   FIT_SEGMENT_LAP_MESG_EVENT_GROUP,
   FIT_SEGMENT_LAP_MESG_SUB_SPORT,
   FIT_SEGMENT_LAP_MESG_GPS_ACCURACY,
   FIT_SEGMENT_LAP_MESG_AVG_TEMPERATURE,
   FIT_SEGMENT_LAP_MESG_MAX_TEMPERATURE,
   FIT_SEGMENT_LAP_MESG_MIN_HEART_RATE,
   FIT_SEGMENT_LAP_MESG_SPORT_EVENT,
   FIT_SEGMENT_LAP_MESG_AVG_LEFT_TORQUE_EFFECTIVENESS,
   FIT_SEGMENT_LAP_MESG_AVG_RIGHT_TORQUE_EFFECTIVENESS,
   FIT_SEGMENT_LAP_MESG_AVG_LEFT_PEDAL_SMOOTHNESS,
   FIT_SEGMENT_LAP_MESG_AVG_RIGHT_PEDAL_SMOOTHNESS,
   FIT_SEGMENT_LAP_MESG_AVG_COMBINED_PEDAL_SMOOTHNESS,
   FIT_SEGMENT_LAP_MESG_STATUS,
   FIT_SEGMENT_LAP_MESG_UUID,
   FIT_SEGMENT_LAP_MESG_AVG_FRACTIONAL_CADENCE,
   FIT_SEGMENT_LAP_MESG_MAX_FRACTIONAL_CADENCE,
   FIT_SEGMENT_LAP_MESG_TOTAL_FRACTIONAL_CYCLES,
   FIT_SEGMENT_LAP_MESG_FIELDS
} FIT_SEGMENT_LAP_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SEGMENT_LAP_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SEGMENT_LAP_MESG_DEF;

// segment_file message

#define FIT_SEGMENT_FILE_MESG_SIZE                                              17
#define FIT_SEGMENT_FILE_MESG_DEF_SIZE                                          26
#define FIT_SEGMENT_FILE_MESG_LEADER_GROUP_PRIMARY_KEY_COUNT                    1
#define FIT_SEGMENT_FILE_MESG_LEADER_ACTIVITY_ID_COUNT                          1
#define FIT_SEGMENT_FILE_MESG_FILE_UUID_COUNT                                   1
#define FIT_SEGMENT_FILE_MESG_LEADER_TYPE_COUNT                                 1

typedef struct
{
   FIT_UINT32 user_profile_primary_key; // Primary key of the user that created the segment file
   FIT_UINT32 leader_group_primary_key[FIT_SEGMENT_FILE_MESG_LEADER_GROUP_PRIMARY_KEY_COUNT]; // Group primary key of each leader in the segment file
   FIT_UINT32 leader_activity_id[FIT_SEGMENT_FILE_MESG_LEADER_ACTIVITY_ID_COUNT]; // Activity ID of each leader in the segment file
   FIT_MESSAGE_INDEX message_index; //
   FIT_STRING file_uuid[FIT_SEGMENT_FILE_MESG_FILE_UUID_COUNT]; // UUID of the segment file
   FIT_BOOL enabled; // Enabled state of the segment file
   FIT_SEGMENT_LEADERBOARD_TYPE leader_type[FIT_SEGMENT_FILE_MESG_LEADER_TYPE_COUNT]; // Leader type of each leader in the segment file
} FIT_SEGMENT_FILE_MESG;

typedef FIT_UINT8 FIT_SEGMENT_FILE_FIELD_NUM;

#define FIT_SEGMENT_FILE_FIELD_NUM_USER_PROFILE_PRIMARY_KEY (FIT_CAST(FIT_SEGMENT_FILE_FIELD_NUM, 4))
#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_GROUP_PRIMARY_KEY (FIT_CAST(FIT_SEGMENT_FILE_FIELD_NUM, 8))
#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_ACTIVITY_ID (FIT_CAST(FIT_SEGMENT_FILE_FIELD_NUM, 9))
#define FIT_SEGMENT_FILE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_SEGMENT_FILE_FIELD_NUM, 254))
#define FIT_SEGMENT_FILE_FIELD_NUM_FILE_UUID (FIT_CAST(FIT_SEGMENT_FILE_FIELD_NUM, 1))
#define FIT_SEGMENT_FILE_FIELD_NUM_ENABLED (FIT_CAST(FIT_SEGMENT_FILE_FIELD_NUM, 3))
#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_TYPE (FIT_CAST(FIT_SEGMENT_FILE_FIELD_NUM, 7))

typedef enum
{
   FIT_SEGMENT_FILE_MESG_USER_PROFILE_PRIMARY_KEY,
   FIT_SEGMENT_FILE_MESG_LEADER_GROUP_PRIMARY_KEY,
   FIT_SEGMENT_FILE_MESG_LEADER_ACTIVITY_ID,
   FIT_SEGMENT_FILE_MESG_MESSAGE_INDEX,
   FIT_SEGMENT_FILE_MESG_FILE_UUID,
   FIT_SEGMENT_FILE_MESG_ENABLED,
   FIT_SEGMENT_FILE_MESG_LEADER_TYPE,
   FIT_SEGMENT_FILE_MESG_FIELDS
} FIT_SEGMENT_FILE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SEGMENT_FILE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SEGMENT_FILE_MESG_DEF;

// workout message

#define FIT_WORKOUT_MESG_SIZE                                                   29
#define FIT_WORKOUT_MESG_DEF_SIZE                                               29
#define FIT_WORKOUT_MESG_WKT_NAME_COUNT                                         16

typedef struct
{
   FIT_WORKOUT_CAPABILITIES capabilities; //
   FIT_STRING wkt_name[FIT_WORKOUT_MESG_WKT_NAME_COUNT]; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 num_valid_steps; // number of valid steps
   FIT_UINT16 pool_length; // 100 * m + 0,
   FIT_SPORT sport; //
   FIT_SUB_SPORT sub_sport; //
   FIT_DISPLAY_MEASURE pool_length_unit; //
} FIT_WORKOUT_MESG;

typedef FIT_UINT8 FIT_WORKOUT_FIELD_NUM;

#define FIT_WORKOUT_FIELD_NUM_CAPABILITIES (FIT_CAST(FIT_WORKOUT_FIELD_NUM, 5))
#define FIT_WORKOUT_FIELD_NUM_WKT_NAME (FIT_CAST(FIT_WORKOUT_FIELD_NUM, 8))
#define FIT_WORKOUT_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_WORKOUT_FIELD_NUM, 254))
#define FIT_WORKOUT_FIELD_NUM_NUM_VALID_STEPS (FIT_CAST(FIT_WORKOUT_FIELD_NUM, 6))
#define FIT_WORKOUT_FIELD_NUM_POOL_LENGTH (FIT_CAST(FIT_WORKOUT_FIELD_NUM, 14))
#define FIT_WORKOUT_FIELD_NUM_SPORT (FIT_CAST(FIT_WORKOUT_FIELD_NUM, 4))
#define FIT_WORKOUT_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_WORKOUT_FIELD_NUM, 11))
#define FIT_WORKOUT_FIELD_NUM_POOL_LENGTH_UNIT (FIT_CAST(FIT_WORKOUT_FIELD_NUM, 15))

typedef enum
{
   FIT_WORKOUT_MESG_CAPABILITIES,
   FIT_WORKOUT_MESG_WKT_NAME,
   FIT_WORKOUT_MESG_MESSAGE_INDEX,
   FIT_WORKOUT_MESG_NUM_VALID_STEPS,
   FIT_WORKOUT_MESG_POOL_LENGTH,
   FIT_WORKOUT_MESG_SPORT,
   FIT_WORKOUT_MESG_SUB_SPORT,
   FIT_WORKOUT_MESG_POOL_LENGTH_UNIT,
   FIT_WORKOUT_MESG_FIELDS
} FIT_WORKOUT_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_WORKOUT_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_WORKOUT_MESG_DEF;

// workout_session message

#define FIT_WORKOUT_SESSION_MESG_SIZE                                           11
#define FIT_WORKOUT_SESSION_MESG_DEF_SIZE                                       26

typedef struct
{
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 num_valid_steps; //
   FIT_UINT16 first_step_index; //
   FIT_UINT16 pool_length; // 100 * m + 0,
   FIT_SPORT sport; //
   FIT_SUB_SPORT sub_sport; //
   FIT_DISPLAY_MEASURE pool_length_unit; //
} FIT_WORKOUT_SESSION_MESG;

typedef FIT_UINT8 FIT_WORKOUT_SESSION_FIELD_NUM;

#define FIT_WORKOUT_SESSION_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_WORKOUT_SESSION_FIELD_NUM, 254))
#define FIT_WORKOUT_SESSION_FIELD_NUM_NUM_VALID_STEPS (FIT_CAST(FIT_WORKOUT_SESSION_FIELD_NUM, 2))
#define FIT_WORKOUT_SESSION_FIELD_NUM_FIRST_STEP_INDEX (FIT_CAST(FIT_WORKOUT_SESSION_FIELD_NUM, 3))
#define FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH (FIT_CAST(FIT_WORKOUT_SESSION_FIELD_NUM, 4))
#define FIT_WORKOUT_SESSION_FIELD_NUM_SPORT (FIT_CAST(FIT_WORKOUT_SESSION_FIELD_NUM, 0))
#define FIT_WORKOUT_SESSION_FIELD_NUM_SUB_SPORT (FIT_CAST(FIT_WORKOUT_SESSION_FIELD_NUM, 1))
#define FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT (FIT_CAST(FIT_WORKOUT_SESSION_FIELD_NUM, 5))

typedef enum
{
   FIT_WORKOUT_SESSION_MESG_MESSAGE_INDEX,
   FIT_WORKOUT_SESSION_MESG_NUM_VALID_STEPS,
   FIT_WORKOUT_SESSION_MESG_FIRST_STEP_INDEX,
   FIT_WORKOUT_SESSION_MESG_POOL_LENGTH,
   FIT_WORKOUT_SESSION_MESG_SPORT,
   FIT_WORKOUT_SESSION_MESG_SUB_SPORT,
   FIT_WORKOUT_SESSION_MESG_POOL_LENGTH_UNIT,
   FIT_WORKOUT_SESSION_MESG_FIELDS
} FIT_WORKOUT_SESSION_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_WORKOUT_SESSION_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_WORKOUT_SESSION_MESG_DEF;

// workout_step message

#define FIT_WORKOUT_STEP_MESG_SIZE                                              103
#define FIT_WORKOUT_STEP_MESG_DEF_SIZE                                          53
#define FIT_WORKOUT_STEP_MESG_WKT_STEP_NAME_COUNT                               16
#define FIT_WORKOUT_STEP_MESG_NOTES_COUNT                                       50

typedef struct
{
   FIT_STRING wkt_step_name[FIT_WORKOUT_STEP_MESG_WKT_STEP_NAME_COUNT]; //
   FIT_UINT32 duration_value; //
   FIT_UINT32 target_value; //
   FIT_UINT32 custom_target_value_low; //
   FIT_UINT32 custom_target_value_high; //
   FIT_UINT32 secondary_target_value; //
   FIT_UINT32 secondary_custom_target_value_low; //
   FIT_UINT32 secondary_custom_target_value_high; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_EXERCISE_CATEGORY exercise_category; //
   FIT_WKT_STEP_DURATION duration_type; //
   FIT_WKT_STEP_TARGET target_type; //
   FIT_INTENSITY intensity; //
   FIT_STRING notes[FIT_WORKOUT_STEP_MESG_NOTES_COUNT]; //
   FIT_WORKOUT_EQUIPMENT equipment; //
   FIT_WKT_STEP_TARGET secondary_target_type; //
} FIT_WORKOUT_STEP_MESG;

typedef FIT_UINT8 FIT_WORKOUT_STEP_FIELD_NUM;

#define FIT_WORKOUT_STEP_FIELD_NUM_WKT_STEP_NAME (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 0))
#define FIT_WORKOUT_STEP_FIELD_NUM_DURATION_VALUE (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 2))
#define FIT_WORKOUT_STEP_FIELD_NUM_TARGET_VALUE (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 4))
#define FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_LOW (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 5))
#define FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_HIGH (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 6))
#define FIT_WORKOUT_STEP_FIELD_NUM_SECONDARY_TARGET_VALUE (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 20))
#define FIT_WORKOUT_STEP_FIELD_NUM_SECONDARY_CUSTOM_TARGET_VALUE_LOW (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 21))
#define FIT_WORKOUT_STEP_FIELD_NUM_SECONDARY_CUSTOM_TARGET_VALUE_HIGH (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 22))
#define FIT_WORKOUT_STEP_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 254))
#define FIT_WORKOUT_STEP_FIELD_NUM_EXERCISE_CATEGORY (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 10))
#define FIT_WORKOUT_STEP_FIELD_NUM_DURATION_TYPE (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 1))
#define FIT_WORKOUT_STEP_FIELD_NUM_TARGET_TYPE (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 3))
#define FIT_WORKOUT_STEP_FIELD_NUM_INTENSITY (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 7))
#define FIT_WORKOUT_STEP_FIELD_NUM_NOTES (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 8))
#define FIT_WORKOUT_STEP_FIELD_NUM_EQUIPMENT (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 9))
#define FIT_WORKOUT_STEP_FIELD_NUM_SECONDARY_TARGET_TYPE (FIT_CAST(FIT_WORKOUT_STEP_FIELD_NUM, 19))

typedef enum
{
   FIT_WORKOUT_STEP_MESG_WKT_STEP_NAME,
   FIT_WORKOUT_STEP_MESG_DURATION_VALUE,
   FIT_WORKOUT_STEP_MESG_TARGET_VALUE,
   FIT_WORKOUT_STEP_MESG_CUSTOM_TARGET_VALUE_LOW,
   FIT_WORKOUT_STEP_MESG_CUSTOM_TARGET_VALUE_HIGH,
   FIT_WORKOUT_STEP_MESG_SECONDARY_TARGET_VALUE,
   FIT_WORKOUT_STEP_MESG_SECONDARY_CUSTOM_TARGET_VALUE_LOW,
   FIT_WORKOUT_STEP_MESG_SECONDARY_CUSTOM_TARGET_VALUE_HIGH,
   FIT_WORKOUT_STEP_MESG_MESSAGE_INDEX,
   FIT_WORKOUT_STEP_MESG_EXERCISE_CATEGORY,
   FIT_WORKOUT_STEP_MESG_DURATION_TYPE,
   FIT_WORKOUT_STEP_MESG_TARGET_TYPE,
   FIT_WORKOUT_STEP_MESG_INTENSITY,
   FIT_WORKOUT_STEP_MESG_NOTES,
   FIT_WORKOUT_STEP_MESG_EQUIPMENT,
   FIT_WORKOUT_STEP_MESG_SECONDARY_TARGET_TYPE,
   FIT_WORKOUT_STEP_MESG_FIELDS
} FIT_WORKOUT_STEP_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_WORKOUT_STEP_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_WORKOUT_STEP_MESG_DEF;

// exercise_title message

#define FIT_EXERCISE_TITLE_MESG_SIZE                                            206
#define FIT_EXERCISE_TITLE_MESG_DEF_SIZE                                        17
#define FIT_EXERCISE_TITLE_MESG_WKT_STEP_NAME_COUNT                             200

typedef struct
{
   FIT_STRING wkt_step_name[FIT_EXERCISE_TITLE_MESG_WKT_STEP_NAME_COUNT]; //
   FIT_MESSAGE_INDEX message_index; //
   FIT_EXERCISE_CATEGORY exercise_category; //
   FIT_UINT16 exercise_name; //
} FIT_EXERCISE_TITLE_MESG;

typedef FIT_UINT8 FIT_EXERCISE_TITLE_FIELD_NUM;

#define FIT_EXERCISE_TITLE_FIELD_NUM_WKT_STEP_NAME (FIT_CAST(FIT_EXERCISE_TITLE_FIELD_NUM, 2))
#define FIT_EXERCISE_TITLE_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_EXERCISE_TITLE_FIELD_NUM, 254))
#define FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_CATEGORY (FIT_CAST(FIT_EXERCISE_TITLE_FIELD_NUM, 0))
#define FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_NAME (FIT_CAST(FIT_EXERCISE_TITLE_FIELD_NUM, 1))

typedef enum
{
   FIT_EXERCISE_TITLE_MESG_WKT_STEP_NAME,
   FIT_EXERCISE_TITLE_MESG_MESSAGE_INDEX,
   FIT_EXERCISE_TITLE_MESG_EXERCISE_CATEGORY,
   FIT_EXERCISE_TITLE_MESG_EXERCISE_NAME,
   FIT_EXERCISE_TITLE_MESG_FIELDS
} FIT_EXERCISE_TITLE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_EXERCISE_TITLE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_EXERCISE_TITLE_MESG_DEF;

// schedule message

#define FIT_SCHEDULE_MESG_SIZE                                                  18
#define FIT_SCHEDULE_MESG_DEF_SIZE                                              26

typedef struct
{
   FIT_UINT32Z serial_number; // Corresponds to file_id of scheduled workout / course.
   FIT_DATE_TIME time_created; // Corresponds to file_id of scheduled workout / course.
   FIT_LOCAL_DATE_TIME scheduled_time; //
   FIT_MANUFACTURER manufacturer; // Corresponds to file_id of scheduled workout / course.
   FIT_UINT16 product; // Corresponds to file_id of scheduled workout / course.
   FIT_BOOL completed; // TRUE if this activity has been started
   FIT_SCHEDULE type; //
} FIT_SCHEDULE_MESG;

typedef FIT_UINT8 FIT_SCHEDULE_FIELD_NUM;

#define FIT_SCHEDULE_FIELD_NUM_SERIAL_NUMBER (FIT_CAST(FIT_SCHEDULE_FIELD_NUM, 2))
#define FIT_SCHEDULE_FIELD_NUM_TIME_CREATED (FIT_CAST(FIT_SCHEDULE_FIELD_NUM, 3))
#define FIT_SCHEDULE_FIELD_NUM_SCHEDULED_TIME (FIT_CAST(FIT_SCHEDULE_FIELD_NUM, 6))
#define FIT_SCHEDULE_FIELD_NUM_MANUFACTURER (FIT_CAST(FIT_SCHEDULE_FIELD_NUM, 0))
#define FIT_SCHEDULE_FIELD_NUM_PRODUCT (FIT_CAST(FIT_SCHEDULE_FIELD_NUM, 1))
#define FIT_SCHEDULE_FIELD_NUM_COMPLETED (FIT_CAST(FIT_SCHEDULE_FIELD_NUM, 4))
#define FIT_SCHEDULE_FIELD_NUM_TYPE (FIT_CAST(FIT_SCHEDULE_FIELD_NUM, 5))

typedef enum
{
   FIT_SCHEDULE_MESG_SERIAL_NUMBER,
   FIT_SCHEDULE_MESG_TIME_CREATED,
   FIT_SCHEDULE_MESG_SCHEDULED_TIME,
   FIT_SCHEDULE_MESG_MANUFACTURER,
   FIT_SCHEDULE_MESG_PRODUCT,
   FIT_SCHEDULE_MESG_COMPLETED,
   FIT_SCHEDULE_MESG_TYPE,
   FIT_SCHEDULE_MESG_FIELDS
} FIT_SCHEDULE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_SCHEDULE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_SCHEDULE_MESG_DEF;

// totals message

#define FIT_TOTALS_MESG_SIZE                                                    29
#define FIT_TOTALS_MESG_DEF_SIZE                                                32

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_UINT32 timer_time; // 1 * s + 0, Excludes pauses
   FIT_UINT32 distance; // 1 * m + 0,
   FIT_UINT32 calories; // 1 * kcal + 0,
   FIT_UINT32 elapsed_time; // 1 * s + 0, Includes pauses
   FIT_UINT32 active_time; // 1 * s + 0,
   FIT_MESSAGE_INDEX message_index; //
   FIT_UINT16 sessions; //
   FIT_SPORT sport; //
} FIT_TOTALS_MESG;

typedef FIT_UINT8 FIT_TOTALS_FIELD_NUM;

#define FIT_TOTALS_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_TOTALS_FIELD_NUM, 253))
#define FIT_TOTALS_FIELD_NUM_TIMER_TIME (FIT_CAST(FIT_TOTALS_FIELD_NUM, 0))
#define FIT_TOTALS_FIELD_NUM_DISTANCE (FIT_CAST(FIT_TOTALS_FIELD_NUM, 1))
#define FIT_TOTALS_FIELD_NUM_CALORIES (FIT_CAST(FIT_TOTALS_FIELD_NUM, 2))
#define FIT_TOTALS_FIELD_NUM_ELAPSED_TIME (FIT_CAST(FIT_TOTALS_FIELD_NUM, 4))
#define FIT_TOTALS_FIELD_NUM_ACTIVE_TIME (FIT_CAST(FIT_TOTALS_FIELD_NUM, 6))
#define FIT_TOTALS_FIELD_NUM_MESSAGE_INDEX (FIT_CAST(FIT_TOTALS_FIELD_NUM, 254))
#define FIT_TOTALS_FIELD_NUM_SESSIONS (FIT_CAST(FIT_TOTALS_FIELD_NUM, 5))
#define FIT_TOTALS_FIELD_NUM_SPORT (FIT_CAST(FIT_TOTALS_FIELD_NUM, 3))

typedef enum
{
   FIT_TOTALS_MESG_TIMESTAMP,
   FIT_TOTALS_MESG_TIMER_TIME,
   FIT_TOTALS_MESG_DISTANCE,
   FIT_TOTALS_MESG_CALORIES,
   FIT_TOTALS_MESG_ELAPSED_TIME,
   FIT_TOTALS_MESG_ACTIVE_TIME,
   FIT_TOTALS_MESG_MESSAGE_INDEX,
   FIT_TOTALS_MESG_SESSIONS,
   FIT_TOTALS_MESG_SPORT,
   FIT_TOTALS_MESG_FIELDS
} FIT_TOTALS_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_TOTALS_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_TOTALS_MESG_DEF;

// weight_scale message

#define FIT_WEIGHT_SCALE_MESG_SIZE                                              27
#define FIT_WEIGHT_SCALE_MESG_DEF_SIZE                                          47

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_WEIGHT weight; // 100 * kg + 0,
   FIT_UINT16 percent_fat; // 100 * % + 0,
   FIT_UINT16 percent_hydration; // 100 * % + 0,
   FIT_UINT16 visceral_fat_mass; // 100 * kg + 0,
   FIT_UINT16 bone_mass; // 100 * kg + 0,
   FIT_UINT16 muscle_mass; // 100 * kg + 0,
   FIT_UINT16 basal_met; // 4 * kcal/day + 0,
   FIT_UINT16 active_met; // 4 * kcal/day + 0, ~4kJ per kcal, 0.25 allows max 16384 kcal
   FIT_MESSAGE_INDEX user_profile_index; // Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file.
   FIT_UINT16 bmi; // 10 * kg/m^2 + 0,
   FIT_UINT8 physique_rating; //
   FIT_UINT8 metabolic_age; // 1 * years + 0,
   FIT_UINT8 visceral_fat_rating; //
} FIT_WEIGHT_SCALE_MESG;

typedef FIT_UINT8 FIT_WEIGHT_SCALE_FIELD_NUM;

#define FIT_WEIGHT_SCALE_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 253))
#define FIT_WEIGHT_SCALE_FIELD_NUM_WEIGHT (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 0))
#define FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_FAT (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 1))
#define FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_HYDRATION (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 2))
#define FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_MASS (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 3))
#define FIT_WEIGHT_SCALE_FIELD_NUM_BONE_MASS (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 4))
#define FIT_WEIGHT_SCALE_FIELD_NUM_MUSCLE_MASS (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 5))
#define FIT_WEIGHT_SCALE_FIELD_NUM_BASAL_MET (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 7))
#define FIT_WEIGHT_SCALE_FIELD_NUM_ACTIVE_MET (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 9))
#define FIT_WEIGHT_SCALE_FIELD_NUM_USER_PROFILE_INDEX (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 12))
#define FIT_WEIGHT_SCALE_FIELD_NUM_BMI (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 13))
#define FIT_WEIGHT_SCALE_FIELD_NUM_PHYSIQUE_RATING (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 8))
#define FIT_WEIGHT_SCALE_FIELD_NUM_METABOLIC_AGE (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 10))
#define FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_RATING (FIT_CAST(FIT_WEIGHT_SCALE_FIELD_NUM, 11))

typedef enum
{
   FIT_WEIGHT_SCALE_MESG_TIMESTAMP,
   FIT_WEIGHT_SCALE_MESG_WEIGHT,
   FIT_WEIGHT_SCALE_MESG_PERCENT_FAT,
   FIT_WEIGHT_SCALE_MESG_PERCENT_HYDRATION,
   FIT_WEIGHT_SCALE_MESG_VISCERAL_FAT_MASS,
   FIT_WEIGHT_SCALE_MESG_BONE_MASS,
   FIT_WEIGHT_SCALE_MESG_MUSCLE_MASS,
   FIT_WEIGHT_SCALE_MESG_BASAL_MET,
   FIT_WEIGHT_SCALE_MESG_ACTIVE_MET,
   FIT_WEIGHT_SCALE_MESG_USER_PROFILE_INDEX,
   FIT_WEIGHT_SCALE_MESG_BMI,
   FIT_WEIGHT_SCALE_MESG_PHYSIQUE_RATING,
   FIT_WEIGHT_SCALE_MESG_METABOLIC_AGE,
   FIT_WEIGHT_SCALE_MESG_VISCERAL_FAT_RATING,
   FIT_WEIGHT_SCALE_MESG_FIELDS
} FIT_WEIGHT_SCALE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_WEIGHT_SCALE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_WEIGHT_SCALE_MESG_DEF;

// blood_pressure message

#define FIT_BLOOD_PRESSURE_MESG_SIZE                                            21
#define FIT_BLOOD_PRESSURE_MESG_DEF_SIZE                                        38

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_UINT16 systolic_pressure; // 1 * mmHg + 0,
   FIT_UINT16 diastolic_pressure; // 1 * mmHg + 0,
   FIT_UINT16 mean_arterial_pressure; // 1 * mmHg + 0,
   FIT_UINT16 map_3_sample_mean; // 1 * mmHg + 0,
   FIT_UINT16 map_morning_values; // 1 * mmHg + 0,
   FIT_UINT16 map_evening_values; // 1 * mmHg + 0,
   FIT_MESSAGE_INDEX user_profile_index; // Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file.
   FIT_UINT8 heart_rate; // 1 * bpm + 0,
   FIT_HR_TYPE heart_rate_type; //
   FIT_BP_STATUS status; //
} FIT_BLOOD_PRESSURE_MESG;

typedef FIT_UINT8 FIT_BLOOD_PRESSURE_FIELD_NUM;

#define FIT_BLOOD_PRESSURE_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 253))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_SYSTOLIC_PRESSURE (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 0))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_DIASTOLIC_PRESSURE (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 1))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_MEAN_ARTERIAL_PRESSURE (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 2))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_3_SAMPLE_MEAN (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 3))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_MORNING_VALUES (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 4))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_EVENING_VALUES (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 5))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_USER_PROFILE_INDEX (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 9))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 6))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE_TYPE (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 7))
#define FIT_BLOOD_PRESSURE_FIELD_NUM_STATUS (FIT_CAST(FIT_BLOOD_PRESSURE_FIELD_NUM, 8))

typedef enum
{
   FIT_BLOOD_PRESSURE_MESG_TIMESTAMP,
   FIT_BLOOD_PRESSURE_MESG_SYSTOLIC_PRESSURE,
   FIT_BLOOD_PRESSURE_MESG_DIASTOLIC_PRESSURE,
   FIT_BLOOD_PRESSURE_MESG_MEAN_ARTERIAL_PRESSURE,
   FIT_BLOOD_PRESSURE_MESG_MAP_3_SAMPLE_MEAN,
   FIT_BLOOD_PRESSURE_MESG_MAP_MORNING_VALUES,
   FIT_BLOOD_PRESSURE_MESG_MAP_EVENING_VALUES,
   FIT_BLOOD_PRESSURE_MESG_USER_PROFILE_INDEX,
   FIT_BLOOD_PRESSURE_MESG_HEART_RATE,
   FIT_BLOOD_PRESSURE_MESG_HEART_RATE_TYPE,
   FIT_BLOOD_PRESSURE_MESG_STATUS,
   FIT_BLOOD_PRESSURE_MESG_FIELDS
} FIT_BLOOD_PRESSURE_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_BLOOD_PRESSURE_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_BLOOD_PRESSURE_MESG_DEF;

// monitoring_info message

#define FIT_MONITORING_INFO_MESG_SIZE                                           8
#define FIT_MONITORING_INFO_MESG_DEF_SIZE                                       11

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_LOCAL_DATE_TIME local_timestamp; // 1 * s + 0, Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction.
} FIT_MONITORING_INFO_MESG;

typedef FIT_UINT8 FIT_MONITORING_INFO_FIELD_NUM;

#define FIT_MONITORING_INFO_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_MONITORING_INFO_FIELD_NUM, 253))
#define FIT_MONITORING_INFO_FIELD_NUM_LOCAL_TIMESTAMP (FIT_CAST(FIT_MONITORING_INFO_FIELD_NUM, 0))

typedef enum
{
   FIT_MONITORING_INFO_MESG_TIMESTAMP,
   FIT_MONITORING_INFO_MESG_LOCAL_TIMESTAMP,
   FIT_MONITORING_INFO_MESG_FIELDS
} FIT_MONITORING_INFO_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_MONITORING_INFO_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_MONITORING_INFO_MESG_DEF;

// monitoring message

#define FIT_MONITORING_MESG_SIZE                                                31
#define FIT_MONITORING_MESG_DEF_SIZE                                            41

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0, Must align to logging interval, for example, time must be 00:00:00 for daily log.
   FIT_UINT32 distance; // 100 * m + 0, Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation.
   FIT_UINT32 cycles; // 2 * cycles + 0, Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation.
   FIT_UINT32 active_time; // 1000 * s + 0,
   FIT_LOCAL_DATE_TIME local_timestamp; // Must align to logging interval, for example, time must be 00:00:00 for daily log.
   FIT_UINT16 calories; // 1 * kcal + 0, Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation
   FIT_UINT16 distance_16; // 1 * 100 * m + 0,
   FIT_UINT16 cycles_16; // 1 * 2 * cycles (steps) + 0,
   FIT_UINT16 active_time_16; // 1 * s + 0,
   FIT_DEVICE_INDEX device_index; // Associates this data to device_info message. Not required for file with single device (sensor).
   FIT_ACTIVITY_TYPE activity_type; //
   FIT_ACTIVITY_SUBTYPE activity_subtype; //
} FIT_MONITORING_MESG;

typedef FIT_UINT8 FIT_MONITORING_FIELD_NUM;

#define FIT_MONITORING_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_MONITORING_FIELD_NUM, 253))
#define FIT_MONITORING_FIELD_NUM_DISTANCE (FIT_CAST(FIT_MONITORING_FIELD_NUM, 2))
#define FIT_MONITORING_FIELD_NUM_CYCLES (FIT_CAST(FIT_MONITORING_FIELD_NUM, 3))
#define FIT_MONITORING_FIELD_NUM_ACTIVE_TIME (FIT_CAST(FIT_MONITORING_FIELD_NUM, 4))
#define FIT_MONITORING_FIELD_NUM_LOCAL_TIMESTAMP (FIT_CAST(FIT_MONITORING_FIELD_NUM, 11))
#define FIT_MONITORING_FIELD_NUM_CALORIES (FIT_CAST(FIT_MONITORING_FIELD_NUM, 1))
#define FIT_MONITORING_FIELD_NUM_DISTANCE_16 (FIT_CAST(FIT_MONITORING_FIELD_NUM, 8))
#define FIT_MONITORING_FIELD_NUM_CYCLES_16 (FIT_CAST(FIT_MONITORING_FIELD_NUM, 9))
#define FIT_MONITORING_FIELD_NUM_ACTIVE_TIME_16 (FIT_CAST(FIT_MONITORING_FIELD_NUM, 10))
#define FIT_MONITORING_FIELD_NUM_DEVICE_INDEX (FIT_CAST(FIT_MONITORING_FIELD_NUM, 0))
#define FIT_MONITORING_FIELD_NUM_ACTIVITY_TYPE (FIT_CAST(FIT_MONITORING_FIELD_NUM, 5))
#define FIT_MONITORING_FIELD_NUM_ACTIVITY_SUBTYPE (FIT_CAST(FIT_MONITORING_FIELD_NUM, 6))

typedef enum
{
   FIT_MONITORING_MESG_TIMESTAMP,
   FIT_MONITORING_MESG_DISTANCE,
   FIT_MONITORING_MESG_CYCLES,
   FIT_MONITORING_MESG_ACTIVE_TIME,
   FIT_MONITORING_MESG_LOCAL_TIMESTAMP,
   FIT_MONITORING_MESG_CALORIES,
   FIT_MONITORING_MESG_DISTANCE_16,
   FIT_MONITORING_MESG_CYCLES_16,
   FIT_MONITORING_MESG_ACTIVE_TIME_16,
   FIT_MONITORING_MESG_DEVICE_INDEX,
   FIT_MONITORING_MESG_ACTIVITY_TYPE,
   FIT_MONITORING_MESG_ACTIVITY_SUBTYPE,
   FIT_MONITORING_MESG_FIELDS
} FIT_MONITORING_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_MONITORING_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_MONITORING_MESG_DEF;

// monitoring_hr_data message

#define FIT_MONITORING_HR_DATA_MESG_SIZE                                        6
#define FIT_MONITORING_HR_DATA_MESG_DEF_SIZE                                    14

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0, Must align to logging interval, for example, time must be 00:00:00 for daily log.
   FIT_UINT8 resting_heart_rate; // 1 * bpm + 0, 7-day rolling average
   FIT_UINT8 current_day_resting_heart_rate; // 1 * bpm + 0, RHR for today only. (Feeds into 7-day average)
} FIT_MONITORING_HR_DATA_MESG;

typedef FIT_UINT8 FIT_MONITORING_HR_DATA_FIELD_NUM;

#define FIT_MONITORING_HR_DATA_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_MONITORING_HR_DATA_FIELD_NUM, 253))
#define FIT_MONITORING_HR_DATA_FIELD_NUM_RESTING_HEART_RATE (FIT_CAST(FIT_MONITORING_HR_DATA_FIELD_NUM, 0))
#define FIT_MONITORING_HR_DATA_FIELD_NUM_CURRENT_DAY_RESTING_HEART_RATE (FIT_CAST(FIT_MONITORING_HR_DATA_FIELD_NUM, 1))

typedef enum
{
   FIT_MONITORING_HR_DATA_MESG_TIMESTAMP,
   FIT_MONITORING_HR_DATA_MESG_RESTING_HEART_RATE,
   FIT_MONITORING_HR_DATA_MESG_CURRENT_DAY_RESTING_HEART_RATE,
   FIT_MONITORING_HR_DATA_MESG_FIELDS
} FIT_MONITORING_HR_DATA_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_MONITORING_HR_DATA_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_MONITORING_HR_DATA_MESG_DEF;

// hr message

#define FIT_HR_MESG_SIZE                                                        13
#define FIT_HR_MESG_DEF_SIZE                                                    23
#define FIT_HR_MESG_EVENT_TIMESTAMP_COUNT                                       1
#define FIT_HR_MESG_FILTERED_BPM_COUNT                                          1
#define FIT_HR_MESG_EVENT_TIMESTAMP_12_COUNT                                    1

typedef struct
{
   FIT_DATE_TIME timestamp; //
   FIT_UINT32 event_timestamp[FIT_HR_MESG_EVENT_TIMESTAMP_COUNT]; // 1024 * s + 0,
   FIT_UINT16 fractional_timestamp; // 32768 * s + 0,
   FIT_UINT8 time256; // 256 * s + 0,
   FIT_UINT8 filtered_bpm[FIT_HR_MESG_FILTERED_BPM_COUNT]; // 1 * bpm + 0,
   FIT_BYTE event_timestamp_12[FIT_HR_MESG_EVENT_TIMESTAMP_12_COUNT]; //
} FIT_HR_MESG;

typedef FIT_UINT8 FIT_HR_FIELD_NUM;

#define FIT_HR_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_HR_FIELD_NUM, 253))
#define FIT_HR_FIELD_NUM_EVENT_TIMESTAMP (FIT_CAST(FIT_HR_FIELD_NUM, 9))
#define FIT_HR_FIELD_NUM_FRACTIONAL_TIMESTAMP (FIT_CAST(FIT_HR_FIELD_NUM, 0))
#define FIT_HR_FIELD_NUM_TIME256 (FIT_CAST(FIT_HR_FIELD_NUM, 1))
#define FIT_HR_FIELD_NUM_FILTERED_BPM (FIT_CAST(FIT_HR_FIELD_NUM, 6))
#define FIT_HR_FIELD_NUM_EVENT_TIMESTAMP_12 (FIT_CAST(FIT_HR_FIELD_NUM, 10))

typedef enum
{
   FIT_HR_MESG_TIMESTAMP,
   FIT_HR_MESG_EVENT_TIMESTAMP,
   FIT_HR_MESG_FRACTIONAL_TIMESTAMP,
   FIT_HR_MESG_TIME256,
   FIT_HR_MESG_FILTERED_BPM,
   FIT_HR_MESG_EVENT_TIMESTAMP_12,
   FIT_HR_MESG_FIELDS
} FIT_HR_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_HR_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_HR_MESG_DEF;

// ant_rx message

#define FIT_ANT_RX_MESG_SIZE                                                    25
#define FIT_ANT_RX_MESG_DEF_SIZE                                                23
#define FIT_ANT_RX_MESG_DATA_COUNT                                              8
#define FIT_ANT_RX_MESG_MESG_DATA_COUNT                                         9

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_BYTE data[FIT_ANT_RX_MESG_DATA_COUNT]; //
   FIT_UINT16 fractional_timestamp; // 32768 * s + 0,
   FIT_BYTE mesg_id; //
   FIT_BYTE mesg_data[FIT_ANT_RX_MESG_MESG_DATA_COUNT]; //
   FIT_UINT8 channel_number; //
} FIT_ANT_RX_MESG;

typedef FIT_UINT8 FIT_ANT_RX_FIELD_NUM;

#define FIT_ANT_RX_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_ANT_RX_FIELD_NUM, 253))
#define FIT_ANT_RX_FIELD_NUM_DATA (FIT_CAST(FIT_ANT_RX_FIELD_NUM, 4))
#define FIT_ANT_RX_FIELD_NUM_FRACTIONAL_TIMESTAMP (FIT_CAST(FIT_ANT_RX_FIELD_NUM, 0))
#define FIT_ANT_RX_FIELD_NUM_MESG_ID (FIT_CAST(FIT_ANT_RX_FIELD_NUM, 1))
#define FIT_ANT_RX_FIELD_NUM_MESG_DATA (FIT_CAST(FIT_ANT_RX_FIELD_NUM, 2))
#define FIT_ANT_RX_FIELD_NUM_CHANNEL_NUMBER (FIT_CAST(FIT_ANT_RX_FIELD_NUM, 3))

typedef enum
{
   FIT_ANT_RX_MESG_TIMESTAMP,
   FIT_ANT_RX_MESG_DATA,
   FIT_ANT_RX_MESG_FRACTIONAL_TIMESTAMP,
   FIT_ANT_RX_MESG_MESG_ID,
   FIT_ANT_RX_MESG_MESG_DATA,
   FIT_ANT_RX_MESG_CHANNEL_NUMBER,
   FIT_ANT_RX_MESG_FIELDS
} FIT_ANT_RX_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_ANT_RX_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_ANT_RX_MESG_DEF;

// ant_tx message

#define FIT_ANT_TX_MESG_SIZE                                                    25
#define FIT_ANT_TX_MESG_DEF_SIZE                                                23
#define FIT_ANT_TX_MESG_DATA_COUNT                                              8
#define FIT_ANT_TX_MESG_MESG_DATA_COUNT                                         9

typedef struct
{
   FIT_DATE_TIME timestamp; // 1 * s + 0,
   FIT_BYTE data[FIT_ANT_TX_MESG_DATA_COUNT]; //
   FIT_UINT16 fractional_timestamp; // 32768 * s + 0,
   FIT_BYTE mesg_id; //
   FIT_BYTE mesg_data[FIT_ANT_TX_MESG_MESG_DATA_COUNT]; //
   FIT_UINT8 channel_number; //
} FIT_ANT_TX_MESG;

typedef FIT_UINT8 FIT_ANT_TX_FIELD_NUM;

#define FIT_ANT_TX_FIELD_NUM_TIMESTAMP (FIT_CAST(FIT_ANT_TX_FIELD_NUM, 253))
#define FIT_ANT_TX_FIELD_NUM_DATA (FIT_CAST(FIT_ANT_TX_FIELD_NUM, 4))
#define FIT_ANT_TX_FIELD_NUM_FRACTIONAL_TIMESTAMP (FIT_CAST(FIT_ANT_TX_FIELD_NUM, 0))
#define FIT_ANT_TX_FIELD_NUM_MESG_ID (FIT_CAST(FIT_ANT_TX_FIELD_NUM, 1))
#define FIT_ANT_TX_FIELD_NUM_MESG_DATA (FIT_CAST(FIT_ANT_TX_FIELD_NUM, 2))
#define FIT_ANT_TX_FIELD_NUM_CHANNEL_NUMBER (FIT_CAST(FIT_ANT_TX_FIELD_NUM, 3))

typedef enum
{
   FIT_ANT_TX_MESG_TIMESTAMP,
   FIT_ANT_TX_MESG_DATA,
   FIT_ANT_TX_MESG_FRACTIONAL_TIMESTAMP,
   FIT_ANT_TX_MESG_MESG_ID,
   FIT_ANT_TX_MESG_MESG_DATA,
   FIT_ANT_TX_MESG_CHANNEL_NUMBER,
   FIT_ANT_TX_MESG_FIELDS
} FIT_ANT_TX_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_ANT_TX_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_ANT_TX_MESG_DEF;

// exd_screen_configuration message

#define FIT_EXD_SCREEN_CONFIGURATION_MESG_SIZE                                  4
#define FIT_EXD_SCREEN_CONFIGURATION_MESG_DEF_SIZE                              17

typedef struct
{
   FIT_UINT8 screen_index; //
   FIT_UINT8 field_count; // number of fields in screen
   FIT_EXD_LAYOUT layout; //
   FIT_BOOL screen_enabled; //
} FIT_EXD_SCREEN_CONFIGURATION_MESG;

typedef FIT_UINT8 FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM;

#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_INDEX (FIT_CAST(FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM, 0))
#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_FIELD_COUNT (FIT_CAST(FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM, 1))
#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_LAYOUT (FIT_CAST(FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM, 2))
#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_ENABLED (FIT_CAST(FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM, 3))

typedef enum
{
   FIT_EXD_SCREEN_CONFIGURATION_MESG_SCREEN_INDEX,
   FIT_EXD_SCREEN_CONFIGURATION_MESG_FIELD_COUNT,
   FIT_EXD_SCREEN_CONFIGURATION_MESG_LAYOUT,
   FIT_EXD_SCREEN_CONFIGURATION_MESG_SCREEN_ENABLED,
   FIT_EXD_SCREEN_CONFIGURATION_MESG_FIELDS
} FIT_EXD_SCREEN_CONFIGURATION_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_EXD_SCREEN_CONFIGURATION_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_EXD_SCREEN_CONFIGURATION_MESG_DEF;

// exd_data_field_configuration message

#define FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_SIZE                              6
#define FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_DEF_SIZE                          23
#define FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_TITLE_COUNT                       1

typedef struct
{
   FIT_UINT8 screen_index; //
   FIT_BYTE concept_field; //
   FIT_UINT8 field_id; //
   FIT_UINT8 concept_count; //
   FIT_EXD_DISPLAY_TYPE display_type; //
   FIT_STRING title[FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_TITLE_COUNT]; //
} FIT_EXD_DATA_FIELD_CONFIGURATION_MESG;

typedef FIT_UINT8 FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM;

#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_SCREEN_INDEX (FIT_CAST(FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM, 0))
#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD (FIT_CAST(FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM, 1))
#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_FIELD_ID (FIT_CAST(FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM, 2))
#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_COUNT (FIT_CAST(FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM, 3))
#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_DISPLAY_TYPE (FIT_CAST(FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM, 4))
#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_TITLE (FIT_CAST(FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM, 5))

typedef enum
{
   FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_SCREEN_INDEX,
   FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_CONCEPT_FIELD,
   FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_FIELD_ID,
   FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_CONCEPT_COUNT,
   FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_DISPLAY_TYPE,
   FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_TITLE,
   FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_FIELDS
} FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_DEF;

// exd_data_concept_configuration message

#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_SIZE                            11
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_DEF_SIZE                        38

typedef struct
{
   FIT_UINT8 screen_index; //
   FIT_BYTE concept_field; //
   FIT_UINT8 field_id; //
   FIT_UINT8 concept_index; //
   FIT_UINT8 data_page; //
   FIT_UINT8 concept_key; //
   FIT_UINT8 scaling; //
   FIT_EXD_DATA_UNITS data_units; //
   FIT_EXD_QUALIFIERS qualifier; //
   FIT_EXD_DESCRIPTORS descriptor; //
   FIT_BOOL is_signed; //
} FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG;

typedef FIT_UINT8 FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM;

#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCREEN_INDEX (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 0))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 1))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_FIELD_ID (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 2))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_INDEX (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 3))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_PAGE (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 4))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_KEY (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 5))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCALING (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 6))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_UNITS (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 8))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_QUALIFIER (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 9))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DESCRIPTOR (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 10))
#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_IS_SIGNED (FIT_CAST(FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM, 11))

typedef enum
{
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_SCREEN_INDEX,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_CONCEPT_FIELD,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_FIELD_ID,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_CONCEPT_INDEX,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_DATA_PAGE,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_CONCEPT_KEY,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_SCALING,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_DATA_UNITS,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_QUALIFIER,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_DESCRIPTOR,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_IS_SIGNED,
   FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_FIELDS
} FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_DEF;

// hrv message

#define FIT_HRV_MESG_SIZE                                                       2
#define FIT_HRV_MESG_DEF_SIZE                                                   8
#define FIT_HRV_MESG_TIME_COUNT                                                 1

typedef struct
{
   FIT_UINT16 time[FIT_HRV_MESG_TIME_COUNT]; // 1000 * s + 0, Time between beats
} FIT_HRV_MESG;

typedef FIT_UINT8 FIT_HRV_FIELD_NUM;

#define FIT_HRV_FIELD_NUM_TIME (FIT_CAST(FIT_HRV_FIELD_NUM, 0))

typedef enum
{
   FIT_HRV_MESG_TIME,
   FIT_HRV_MESG_FIELDS
} FIT_HRV_MESG_FIELD;

typedef struct
{
   FIT_UINT8 reserved_1;
   FIT_UINT8 arch;
   FIT_MESG_NUM global_mesg_num;
   FIT_UINT8 num_fields;
   FIT_UINT8 fields[FIT_HRV_MESG_FIELDS * FIT_FIELD_DEF_SIZE];
} FIT_HRV_MESG_DEF;

typedef enum {
   FIT_MESG_PAD,
   FIT_MESG_FILE_ID,
   FIT_MESG_FILE_CREATOR,
   FIT_MESG_SOFTWARE,
   FIT_MESG_SLAVE_DEVICE,
   FIT_MESG_CAPABILITIES,
   FIT_MESG_FILE_CAPABILITIES,
   FIT_MESG_MESG_CAPABILITIES,
   FIT_MESG_FIELD_CAPABILITIES,
   FIT_MESG_DEVICE_SETTINGS,
   FIT_MESG_USER_PROFILE,
   FIT_MESG_HRM_PROFILE,
   FIT_MESG_SDM_PROFILE,
   FIT_MESG_BIKE_PROFILE,
   FIT_MESG_CONNECTIVITY,
   FIT_MESG_ZONES_TARGET,
   FIT_MESG_SPORT,
   FIT_MESG_HR_ZONE,
   FIT_MESG_SPEED_ZONE,
   FIT_MESG_CADENCE_ZONE,
   FIT_MESG_POWER_ZONE,
   FIT_MESG_MET_ZONE,
   FIT_MESG_TRAINING_SETTINGS,
   FIT_MESG_DIVE_SETTINGS,
   FIT_MESG_GOAL,
   FIT_MESG_ACTIVITY,
   FIT_MESG_SESSION,
   FIT_MESG_LAP,
   FIT_MESG_LENGTH,
   FIT_MESG_RECORD,
   FIT_MESG_EVENT,
   FIT_MESG_DEVICE_INFO,
   FIT_MESG_DEVICE_AUX_BATTERY_INFO,
   FIT_MESG_TRAINING_FILE,
   FIT_MESG_WEATHER_CONDITIONS,
   FIT_MESG_WEATHER_ALERT,
   FIT_MESG_NMEA_SENTENCE,
   FIT_MESG_AVIATION_ATTITUDE,
   FIT_MESG_VIDEO_TITLE,
   FIT_MESG_VIDEO_DESCRIPTION,
   FIT_MESG_SET,
   FIT_MESG_FIELD_DESCRIPTION,
   FIT_MESG_DEVELOPER_DATA_ID,
   FIT_MESG_COURSE,
   FIT_MESG_COURSE_POINT,
   FIT_MESG_SEGMENT_ID,
   FIT_MESG_SEGMENT_LEADERBOARD_ENTRY,
   FIT_MESG_SEGMENT_POINT,
   FIT_MESG_SEGMENT_LAP,
   FIT_MESG_SEGMENT_FILE,
   FIT_MESG_WORKOUT,
   FIT_MESG_WORKOUT_SESSION,
   FIT_MESG_WORKOUT_STEP,
   FIT_MESG_EXERCISE_TITLE,
   FIT_MESG_SCHEDULE,
   FIT_MESG_TOTALS,
   FIT_MESG_WEIGHT_SCALE,
   FIT_MESG_BLOOD_PRESSURE,
   FIT_MESG_MONITORING_INFO,
   FIT_MESG_MONITORING,
   FIT_MESG_MONITORING_HR_DATA,
   FIT_MESG_HR,
   FIT_MESG_ANT_RX,
   FIT_MESG_ANT_TX,
   FIT_MESG_EXD_SCREEN_CONFIGURATION,
   FIT_MESG_EXD_DATA_FIELD_CONFIGURATION,
   FIT_MESG_EXD_DATA_CONCEPT_CONFIGURATION,
   FIT_MESG_HRV,
   FIT_MESGS
} FIT_MESG;

typedef const FIT_MESG_DEF * FIT_CONST_MESG_DEF_PTR;
extern const FIT_CONST_MESG_DEF_PTR fit_mesg_defs[FIT_MESGS];




///////////////////////////////////////////////////////////////////////
// Files
// Use FIT_MESG_OFFSET macro get byte offset of messages in a file.
///////////////////////////////////////////////////////////////////////

#define FIT_FILE_DATA_SIZE       (FIT_CAST(FIT_UINT32, 63))
#define FIT_FILE_SIZE            (FIT_FILE_HDR_SIZE + FIT_FILE_DATA_SIZE + sizeof(FIT_UINT16))
#define FIT_FILE_MESG_COUNT      1

typedef enum {
   FIT_FILE_DEF_DEVICE,
   FIT_FILE_DEFS
} FIT_FILE_DEF_ENUM;

typedef enum {
   FIT_FILE_INDEX_DEVICE_0,
   FIT_FILE_INDEX_COUNT
} FIT_FILE_INDEX;

#define FIT_FILE_INDEX_DEVICE                                                   FIT_FILE_INDEX_DEVICE_0

#define FIT_DEVICE_FILE_FILE_ID_MESGS                                           1
#define FIT_DEVICE_FILE_DATA_SIZE                                               (FIT_CAST(FIT_UINT32, 63))
#define FIT_DEVICE_FILE_SIZE                                                    (FIT_FILE_HDR_SIZE + FIT_DEVICE_FILE_DATA_SIZE + sizeof(FIT_UINT16))
#define FIT_DEVICE_FILE_MESG_COUNT                                              1
#define FIT_DEVICE_FILE_COUNT                                                   1



#define FIT_DEVICE_FILE_CRC_PAD_SIZE ((FIT_ALIGNMENT - FIT_FILE_CRC_SIZE) % FIT_ALIGNMENT)

typedef struct
{
   FIT_UINT8 hdr[FIT_FILE_HDR_SIZE];
   FIT_UINT8 file_id_mesg_def[FIT_HDR_SIZE + FIT_FILE_ID_MESG_DEF_SIZE];
   FIT_UINT8 file_id_mesg[FIT_DEVICE_FILE_FILE_ID_MESGS][FIT_HDR_SIZE + FIT_FILE_ID_MESG_SIZE];
   FIT_UINT8 crc[2];
} FIT_DEVICE_FILE;

extern const FIT_DEVICE_FILE fit_device_file;


extern const FIT_FILE_DEF fit_file_defs[FIT_FILE_DEFS];





#if defined(__cplusplus)
   }
#endif

#endif // !defined(FIT_EXAMPLE_H)

