From 2d463c8bc22e408206fe26a36430bba3ed22aee5 Mon Sep 17 00:00:00 2001 From: Poncho <781063+MeisterP@users.noreply.github.com> Date: Sat, 27 Dec 2025 20:05:48 +0100 Subject: [PATCH] Upgrade FIT SDK to 21.188 (#4776) [skip ci] The presence of a \ in a string will produce an error in python 3.13 Using raw strings in all regexes avoids this. --- src/Resources/json/FITmetadata.json | 19 +- util/fit/fit_example.h | 18912 +++++++++++++------------- util/fit/fitprod.py | 6 +- 3 files changed, 9454 insertions(+), 9483 deletions(-) diff --git a/src/Resources/json/FITmetadata.json b/src/Resources/json/FITmetadata.json index 268db8055..e9affa423 100644 --- a/src/Resources/json/FITmetadata.json +++ b/src/Resources/json/FITmetadata.json @@ -1,5 +1,5 @@ { - "VERSION":1755650470, + "VERSION":1766851697, "COMMENT":"Do not edit this file directly it is generated.", "PRODUCTS":[ { "manu":1, "prod":3592, "name":"Varia Rtl515" }, @@ -508,6 +508,7 @@ { "manu":1, "prod":4446, "name":"Hrm Fit" }, { "manu":1, "prod":4472, "name":"Marq Gen2 Commander" }, { "manu":1, "prod":4477, "name":"Lily Athlete" }, + { "manu":1, "prod":4525, "name":"Rally X10" }, { "manu":1, "prod":4532, "name":"Fenix8 Solar" }, { "manu":1, "prod":4533, "name":"Fenix8 Solar Large" }, { "manu":1, "prod":4534, "name":"Fenix8 Small" }, @@ -520,14 +521,25 @@ { "manu":1, "prod":4586, "name":"Instinct3 Amoled 45Mm" }, { "manu":1, "prod":4587, "name":"Instinct3 Amoled 50Mm" }, { "manu":1, "prod":4588, "name":"Descent G2" }, + { "manu":1, "prod":4603, "name":"Venu X1" }, { "manu":1, "prod":4606, "name":"Hrm 200" }, { "manu":1, "prod":4625, "name":"Vivoactive6" }, + { "manu":1, "prod":4631, "name":"Fenix8 Pro" }, + { "manu":1, "prod":4633, "name":"Edge 550" }, + { "manu":1, "prod":4634, "name":"Edge 850" }, + { "manu":1, "prod":4643, "name":"Venu4" }, + { "manu":1, "prod":4644, "name":"Venu4S" }, { "manu":1, "prod":4647, "name":"Approachs44" }, + { "manu":1, "prod":4655, "name":"Edge Mtb" }, { "manu":1, "prod":4656, "name":"Approachs50" }, { "manu":1, "prod":4666, "name":"Fenix E" }, + { "manu":1, "prod":4745, "name":"Bounce2" }, { "manu":1, "prod":4759, "name":"Instinct3 Solar 50Mm" }, { "manu":1, "prod":4775, "name":"Tactix8 Amoled" }, { "manu":1, "prod":4776, "name":"Tactix8 Solar" }, + { "manu":1, "prod":4879, "name":"D2 Mach2" }, + { "manu":1, "prod":4678, "name":"Instinct Crossover Amoled" }, + { "manu":1, "prod":4944, "name":"D2 Air X15" }, { "manu":1, "prod":10007, "name":"Sdm4" }, { "manu":1, "prod":10014, "name":"Edge Remote" }, { "manu":1, "prod":20533, "name":"Tacx Training App Win" }, @@ -774,6 +786,7 @@ { "manu":333, "name":"Tektro Racing Products" }, { "manu":334, "name":"Darad Innovation Corporation" }, { "manu":335, "name":"Cycloptim" }, + { "manu":337, "name":"Runna" }, { "manu":5759, "name":"Actigraphcorp" } ], @@ -2177,6 +2190,8 @@ { "num": 389 , "desc":"Hsa Configuration Data" }, { "num": 393 , "desc":"Dive Apnea Alarm" }, { "num": 398 , "desc":"Skin Temp Overnight" }, - { "num": 409 , "desc":"Hsa Wrist Temperature Data" } + { "num": 409 , "desc":"Hsa Wrist Temperature Data" }, + { "num": 470 , "desc":"Sleep Disruption Severity Period" }, + { "num": 471 , "desc":"Sleep Disruption Overnight Severity" } ] } diff --git a/util/fit/fit_example.h b/util/fit/fit_example.h index b63e63352..c2c3fbdaf 100644 --- a/util/fit/fit_example.h +++ b/util/fit/fit_example.h @@ -1,9478 +1,9434 @@ -///////////////////////////////////////////////////////////////////////////////////////////// -// 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) - +///////////////////////////////////////////////////////////////////////////////////////////// +// 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.188.0Release +// Tag = production/release/21.188.0-0-g55050f8 +// 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_SLEEP_DISRUPTION_SEVERITY_PERIOD (FIT_CAST(FIT_MESG_NUM, 470)) +#define FIT_MESG_NUM_SLEEP_DISRUPTION_OVERNIGHT_SEVERITY (FIT_CAST(FIT_MESG_NUM, 471)) +#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 125 + +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_RUNNA (FIT_CAST(FIT_MANUFACTURER, 337)) +#define FIT_MANUFACTURER_ACTIGRAPHCORP (FIT_CAST(FIT_MANUFACTURER, 5759)) +#define FIT_MANUFACTURER_COUNT 233 + +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_RALLY_X10 (FIT_CAST(FIT_GARMIN_PRODUCT, 4525)) // Rally 110/210 +#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_VENU_X1 (FIT_CAST(FIT_GARMIN_PRODUCT, 4603)) +#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_FENIX8_PRO (FIT_CAST(FIT_GARMIN_PRODUCT, 4631)) +#define FIT_GARMIN_PRODUCT_EDGE_550 (FIT_CAST(FIT_GARMIN_PRODUCT, 4633)) +#define FIT_GARMIN_PRODUCT_EDGE_850 (FIT_CAST(FIT_GARMIN_PRODUCT, 4634)) +#define FIT_GARMIN_PRODUCT_VENU4 (FIT_CAST(FIT_GARMIN_PRODUCT, 4643)) +#define FIT_GARMIN_PRODUCT_VENU4S (FIT_CAST(FIT_GARMIN_PRODUCT, 4644)) +#define FIT_GARMIN_PRODUCT_APPROACHS44 (FIT_CAST(FIT_GARMIN_PRODUCT, 4647)) +#define FIT_GARMIN_PRODUCT_EDGE_MTB (FIT_CAST(FIT_GARMIN_PRODUCT, 4655)) +#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_BOUNCE2 (FIT_CAST(FIT_GARMIN_PRODUCT, 4745)) +#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_D2_MACH2 (FIT_CAST(FIT_GARMIN_PRODUCT, 4879)) +#define FIT_GARMIN_PRODUCT_INSTINCT_CROSSOVER_AMOLED (FIT_CAST(FIT_GARMIN_PRODUCT, 4678)) +#define FIT_GARMIN_PRODUCT_D2_AIR_X15 (FIT_CAST(FIT_GARMIN_PRODUCT, 4944)) +#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 474 + +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_SLEEP_DISRUPTION_SEVERITY; +#define FIT_SLEEP_DISRUPTION_SEVERITY_INVALID FIT_ENUM_INVALID +#define FIT_SLEEP_DISRUPTION_SEVERITY_NONE (FIT_CAST(FIT_SLEEP_DISRUPTION_SEVERITY, 0)) +#define FIT_SLEEP_DISRUPTION_SEVERITY_LOW (FIT_CAST(FIT_SLEEP_DISRUPTION_SEVERITY, 1)) +#define FIT_SLEEP_DISRUPTION_SEVERITY_MEDIUM (FIT_CAST(FIT_SLEEP_DISRUPTION_SEVERITY, 2)) +#define FIT_SLEEP_DISRUPTION_SEVERITY_HIGH (FIT_CAST(FIT_SLEEP_DISRUPTION_SEVERITY, 3)) +#define FIT_SLEEP_DISRUPTION_SEVERITY_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, + 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, + 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, + 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) + diff --git a/util/fit/fitprod.py b/util/fit/fitprod.py index 41f3af312..d588509ac 100755 --- a/util/fit/fitprod.py +++ b/util/fit/fitprod.py @@ -23,7 +23,7 @@ for line in lines: match = re.search("FIT_GARMIN_PROD", line) if match: name = re.search("(FIT_GARMIN_PRODUCT_)([^ \t]*)", line) - id = re.search("\(FIT_GARMIN_PRODUCT, ([ 0-9]*)", line) + id = re.search(r"\(FIT_GARMIN_PRODUCT, ([ 0-9]*)", line) if name and id: # extract name print(pre+ '{ "manu":1, "prod":' + id.group(1).strip() + ', "name":"' + name.group(2).strip().replace('_',' ').title() + '" }', end="") @@ -36,7 +36,7 @@ print("\n ],\n") print(' "MANUFACTURERS":[') pre=" " for line in lines: - match = re.search("MANUFACTURER_([^ \t]*).*\(FIT_MANUFACTURER, ([ 0-9]*)", line) + match = re.search(r"MANUFACTURER_([^ \t]*).*\(FIT_MANUFACTURER, ([ 0-9]*)", line) if match: print(pre+ '{ "manu":' + match.group(2).strip() + ', "name":"' + match.group(1).strip().replace('_',' ').title() + '" }', end="") pre=",\n " @@ -59,7 +59,7 @@ for line in fieldlines: print(' "MESSAGES":[') pre=" " for line in lines: - match = re.search("FIT_MESG_NUM_([^ \t]*).*\(FIT_MESG_NUM, ([ 0-9]*)", line) + match = re.search(r"FIT_MESG_NUM_([^ \t]*).*\(FIT_MESG_NUM, ([ 0-9]*)", line) if match: num = int(match.group(2).strip()) if num > 0: