From 97c017f952a62cef9bbeb13a8f5beb76c85bf3cc Mon Sep 17 00:00:00 2001 From: brice Date: Tue, 15 Dec 2020 14:32:55 +0000 Subject: [PATCH] Fix bad import of SDK 21.40 resulting in mistake in parsing - critical fix --- Sources/FitFileParser/FitMessage.swift | 1 + Sources/FitFileParserTypes/fit.c | 836 +- Sources/FitFileParserTypes/fit_example.c | 3027 +-- Sources/FitFileParserTypes/include/fit.h | 794 +- .../FitFileParserTypes/include/fit_example.h | 15992 ++++++++-------- 5 files changed, 10327 insertions(+), 10323 deletions(-) diff --git a/Sources/FitFileParser/FitMessage.swift b/Sources/FitFileParser/FitMessage.swift index 4d0ee7d..b13ff10 100644 --- a/Sources/FitFileParser/FitMessage.swift +++ b/Sources/FitFileParser/FitMessage.swift @@ -187,3 +187,4 @@ public class FitMessage { return rv } } + diff --git a/Sources/FitFileParserTypes/fit.c b/Sources/FitFileParserTypes/fit.c index 9e05c3f..ea329fc 100644 --- a/Sources/FitFileParserTypes/fit.c +++ b/Sources/FitFileParserTypes/fit.c @@ -1,418 +1,418 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.40Release -// Tag = production/akw/21.40.00-0-g813c158 -// Product = EXAMPLE -// Alignment = 4 bytes, padding disabled. -//////////////////////////////////////////////////////////////////////////////// - - -#include "string.h" -#include "fit_product.h" - - -/////////////////////////////////////////////////////////////////////// -// Public Constants -/////////////////////////////////////////////////////////////////////// - -const FIT_UINT8 fit_base_type_sizes[FIT_BASE_TYPES] = -{ - sizeof(FIT_ENUM), - sizeof(FIT_SINT8), - sizeof(FIT_UINT8), - sizeof(FIT_SINT16), - sizeof(FIT_UINT16), - sizeof(FIT_SINT32), - sizeof(FIT_UINT32), - sizeof(FIT_STRING), - sizeof(FIT_FLOAT32), - sizeof(FIT_FLOAT64), - sizeof(FIT_UINT8Z), - sizeof(FIT_UINT16Z), - sizeof(FIT_UINT32Z), - sizeof(FIT_BYTE), - sizeof(FIT_SINT64), - sizeof(FIT_UINT64), - sizeof(FIT_UINT64Z), -}; - - -typedef union - { - FIT_UINT8 uint8_value[8]; - FIT_FLOAT64 float64_value; - FIT_FLOAT32 float32_value; - } FIT_INVALID_FLOAT; - -static const FIT_INVALID_FLOAT invalid_float = - { - { - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - 0xFF - } - }; - -const FIT_ENUM fit_enum_invalid = FIT_ENUM_INVALID; -const FIT_SINT8 fit_sint8_invalid = FIT_SINT8_INVALID; -const FIT_UINT8 fit_uint8_invalid = FIT_UINT8_INVALID; -const FIT_SINT16 fit_sint16_invalid = FIT_SINT16_INVALID; -const FIT_UINT16 fit_uint16_invalid = FIT_UINT16_INVALID; -const FIT_SINT32 fit_sint32_invalid = FIT_SINT32_INVALID; -const FIT_UINT32 fit_uint32_invalid = FIT_UINT32_INVALID; -const FIT_STRING fit_string_invalid = FIT_STRING_INVALID; -const FIT_UINT8Z fit_uint8z_invalid = FIT_UINT8Z_INVALID; -const FIT_UINT16Z fit_uint16z_invalid = FIT_UINT16Z_INVALID; -const FIT_UINT32Z fit_uint32z_invalid = FIT_UINT32Z_INVALID; -const FIT_BYTE fit_byte_invalid = FIT_BYTE_INVALID; -const FIT_SINT64 fit_sint64_invalid = FIT_SINT64_INVALID; -const FIT_UINT64 fit_uint64_invalid = FIT_UINT64_INVALID; -const FIT_UINT64Z fit_uint64z_invalid = FIT_UINT64Z_INVALID; - -const FIT_CONST_UINT8_PTR fit_base_type_invalids[FIT_BASE_TYPES] = -{ - (FIT_CONST_UINT8_PTR)&fit_enum_invalid, - (FIT_CONST_UINT8_PTR)&fit_sint8_invalid, - (FIT_CONST_UINT8_PTR)&fit_uint8_invalid, - (FIT_CONST_UINT8_PTR)&fit_sint16_invalid, - (FIT_CONST_UINT8_PTR)&fit_uint16_invalid, - (FIT_CONST_UINT8_PTR)&fit_sint32_invalid, - (FIT_CONST_UINT8_PTR)&fit_uint32_invalid, - (FIT_CONST_UINT8_PTR)&fit_string_invalid, - (FIT_CONST_UINT8_PTR)&invalid_float.float32_value, - (FIT_CONST_UINT8_PTR)&invalid_float.float64_value, - (FIT_CONST_UINT8_PTR)&fit_uint8z_invalid, - (FIT_CONST_UINT8_PTR)&fit_uint16z_invalid, - (FIT_CONST_UINT8_PTR)&fit_uint32z_invalid, - (FIT_CONST_UINT8_PTR)&fit_byte_invalid, - (FIT_CONST_UINT8_PTR)&fit_sint64_invalid, - (FIT_CONST_UINT8_PTR)&fit_uint64_invalid, - (FIT_CONST_UINT8_PTR)&fit_uint64z_invalid, -}; - - -/////////////////////////////////////////////////////////////////////// -// Public Functions -/////////////////////////////////////////////////////////////////////// - -FIT_UINT8 Fit_GetArch(void) -{ - const FIT_UINT16 arch = 0x0100; - return (*(FIT_UINT8 *)&arch); -} - -const FIT_MESG_DEF *Fit_GetMesgDef(FIT_UINT16 global_mesg_num) -{ - FIT_UINT8 index; - - for (index = 0; index < FIT_MESGS; index++) - { - if (fit_mesg_defs[index]->global_mesg_num == global_mesg_num) - return (FIT_MESG_DEF *) fit_mesg_defs[index]; - } - - return (FIT_MESG_DEF *) FIT_NULL; -} - -const FIT_MESG_DEF *Fit_GetMesgDefFromEnum(FIT_UINT32 fit_mesg_num) -{ - //Verify enum in range - if (FIT_MESGS > fit_mesg_num) - { - return fit_mesg_defs[fit_mesg_num]; - } - - return (FIT_MESG_DEF *)FIT_NULL; -} - -FIT_UINT16 Fit_GetMesgDefSize(const FIT_MESG_DEF *mesg_def) -{ - if (mesg_def == FIT_NULL) - return 0; - - return FIT_STRUCT_OFFSET(fields, FIT_MESG_DEF) + (FIT_UINT16)mesg_def->num_fields * FIT_FIELD_DEF_SIZE; -} - -#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) -FIT_UINT16 Fit_GetMesgSize(FIT_UINT16 global_mesg_num) -{ - const FIT_MESG_DEF *mesg_def; - FIT_UINT8 field; - FIT_UINT16 size = 0; - - mesg_def = Fit_GetMesgDef(global_mesg_num); - - if (mesg_def == FIT_NULL) - return 0; - - for (field = 0; field < mesg_def->num_fields; field++) - { - size += mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(size, field)]; - } - - return size; -} -#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) - -#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) -FIT_UINT16 Fit_GetMesgSizeFromEnum(FIT_UINT32 fit_mesg_num) -{ - const FIT_MESG_DEF *mesg_def; - FIT_UINT8 field; - FIT_UINT16 size = 0; - - mesg_def = Fit_GetMesgDefFromEnum(fit_mesg_num); - - if (mesg_def == FIT_NULL) - return 0; - - for (field = 0; field < mesg_def->num_fields; field++) - { - size += mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(size, field)]; - } - - return size; -} -#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) - -FIT_BOOL Fit_InitMesg(const FIT_MESG_DEF *mesg_def, void *mesg) -{ - FIT_UINT8 *mesg_buf = (FIT_UINT8 *) mesg; - FIT_UINT8 field; - - if (mesg_def == FIT_NULL) - return FIT_FALSE; - - for (field = 0; field < mesg_def->num_fields; field++) - { - FIT_UINT8 base_type_num = mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(base_type, field)] & FIT_BASE_TYPE_NUM_MASK; - FIT_UINT8 base_type_size; - FIT_UINT8 field_size; - - if (base_type_num >= FIT_BASE_TYPES) - return FIT_FALSE; - - base_type_size = fit_base_type_sizes[base_type_num]; - - for (field_size = 0; field_size < mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(size, field)]; field_size += base_type_size) - { - memcpy(mesg_buf, fit_base_type_invalids[base_type_num], base_type_size); - mesg_buf += base_type_size; - } - } - - return FIT_TRUE; -} - -#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) -FIT_UINT16 Fit_GetFieldOffset(const FIT_MESG_DEF *mesg_def, FIT_UINT8 field_def_num) -{ - FIT_UINT16 offset = 0; - FIT_UINT8 field; - - if (mesg_def == FIT_NULL) - return FIT_UINT16_INVALID; - - for (field = 0; field < mesg_def->num_fields; field++) - { - if (mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(field_def_num, field)] == field_def_num) - return offset; - - offset += mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(size, field)]; - } - - return FIT_UINT16_INVALID; -} -#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) - -FIT_FIELD_DEF Fit_GetFieldDef(const FIT_MESG_DEF *mesg_def, FIT_UINT8 field_def_num) -{ - FIT_FIELD_DEF field_def; - const FIT_UINT8 *field_def_ptr = mesg_def->fields; - FIT_UINT8 field; - - field_def.field_def_num = FIT_FIELD_NUM_INVALID; - field_def.size = 0; - field_def.base_type = FIT_BASE_TYPE_UINT8; - - if (mesg_def != FIT_NULL) - { - for (field = 0; field < mesg_def->num_fields; field++) - { - if (mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(field_def_num, field)] == field_def_num) - { - memcpy(&field_def, field_def_ptr, FIT_FIELD_DEF_SIZE); - break; - } - - field_def_ptr += FIT_FIELD_DEF_SIZE; - } - } - - return field_def; -} - -FIT_UINT8 Fit_LookupMessage(FIT_UINT16 global_mesg_num, FIT_UINT16 message_index, FIT_UINT32 *offset, FIT_READ_BYTES_FUNC read_bytes_func, FIT_BOOL read_header) -{ - FIT_UINT16 global_mesg_nums[FIT_MAX_LOCAL_MESGS]; - FIT_UINT16 sizes[FIT_MAX_LOCAL_MESGS]; - FIT_UINT16 current_message_index = FIT_UINT16_INVALID; - #if defined(FIT_MESSAGE_INDEX) - FIT_UINT16 message_index_offset = FIT_UINT16_INVALID; - #endif - FIT_UINT8 i; - - *offset = 0; - - if (read_header) - { - if(read_bytes_func(offset, FIT_STRUCT_OFFSET(header_size, FIT_FILE_HDR), sizeof(FIT_UINT8)) != sizeof(FIT_UINT8)) - return FIT_UINT8_INVALID; - } - - for (i = 0; i < FIT_MAX_LOCAL_MESGS; i++) - { - global_mesg_nums[i] = FIT_UINT16_INVALID; - sizes[i] = 0; - } - - for (;;) - { - FIT_UINT8 header; - FIT_UINT8 local_mesg_num; - - if (read_bytes_func(&header, *offset, sizeof(header)) != sizeof(header)) - return FIT_UINT8_INVALID; - - *offset += sizeof(header); - - if ((header & (FIT_HDR_TIME_REC_BIT | FIT_HDR_TYPE_DEF_BIT)) == FIT_HDR_TYPE_DEF_BIT) - { - FIT_MESG_DEF mesg_def_header; - FIT_FIELD_DEF field_def; - #if defined(FIT_MESSAGE_INDEX) - FIT_UINT16 current_message_index_offset = FIT_UINT16_INVALID; // Initialize to invalid. If not found, it will remain invalid. - #endif - FIT_UINT16 current_size; - FIT_UINT8 current_field_def; - - local_mesg_num = header & FIT_HDR_TYPE_MASK; - - if (read_bytes_func(&mesg_def_header, *offset, FIT_MESG_DEF_HEADER_SIZE) != FIT_MESG_DEF_HEADER_SIZE) - return FIT_UINT8_INVALID; - - *offset += FIT_MESG_DEF_HEADER_SIZE; - global_mesg_nums[local_mesg_num] = mesg_def_header.global_mesg_num; - current_size = 0; - - for (current_field_def = 0; current_field_def < mesg_def_header.num_fields; current_field_def++) - { - if (read_bytes_func(&field_def, *offset, FIT_FIELD_DEF_SIZE) != FIT_FIELD_DEF_SIZE) - return FIT_UINT8_INVALID; - - #if defined(FIT_MESSAGE_INDEX) - if (field_def.field_def_num == FIT_FIELD_NUM_MESSAGE_INDEX) - current_message_index_offset = current_size; - #endif - - current_size += field_def.size; - *offset += FIT_FIELD_DEF_SIZE; - } - - sizes[local_mesg_num] = current_size; - - #if defined(FIT_MESSAGE_INDEX) - if (global_mesg_nums[local_mesg_num] == global_mesg_num) - message_index_offset = current_message_index_offset; - #endif - } - else - { - if (header & FIT_HDR_TIME_REC_BIT) - local_mesg_num = (header & FIT_HDR_TIME_TYPE_MASK) >> FIT_HDR_TIME_TYPE_SHIFT; - else - local_mesg_num = header & FIT_HDR_TYPE_MASK; - - if (global_mesg_nums[local_mesg_num] == global_mesg_num) - { - // If the requested message index is invalid, we've found a match. - if (message_index == FIT_UINT16_INVALID) - return local_mesg_num; - - #if defined(FIT_MESSAGE_INDEX) - if (message_index_offset != FIT_UINT16_INVALID) - { - // Read the message index. - if (read_bytes_func(¤t_message_index, *offset + message_index_offset, sizeof(current_message_index)) != sizeof(current_message_index)) - return FIT_UINT8_INVALID; - } - else - #endif - { - current_message_index++; - } - - #if defined(FIT_MESSAGE_INDEX) - if ((message_index & FIT_MESSAGE_INDEX_MASK) == (current_message_index & FIT_MESSAGE_INDEX_MASK)) - #else - if (message_index == current_message_index) - #endif - { - return local_mesg_num; - } - } - else if (global_mesg_nums[local_mesg_num] == FIT_UINT16_INVALID) - { - return FIT_UINT8_INVALID; - } - - *offset += sizes[local_mesg_num]; - } - } -} - -FIT_UINT32 Fit_GetFileMesgOffset(const FIT_FILE_DEF *file_def, FIT_UINT16 mesg_num, FIT_UINT16 mesg_index) -{ - FIT_UINT32 offset = 0; - FIT_UINT16 i = 0; - - while (i < file_def->mesg_count) - { - if (mesg_num == file_def->mesgs[i].num) - { - offset = file_def->mesgs[i].data_file_offset; - break; - } - - i++; - } - - if (i >= file_def->mesg_count) - return FIT_UINT32_INVALID; - - // Make sure mesg_index is valid for this mesg num and file definition - if (mesg_index >= file_def->mesgs[i].count) - return FIT_UINT32_INVALID; - - // Compute size of each message (header byte + data) - i = FIT_HDR_SIZE + Fit_GetMesgSize(mesg_num); - - offset += mesg_index * i; - - return offset; -} +//////////////////////////////////////////////////////////////////////////////// +// The following FIT Protocol software provided may be used with FIT protocol +// devices only and remains the copyrighted property of Garmin Canada Inc. +// The software is being provided on an "as-is" basis and as an accommodation, +// and therefore all warranties, representations, or guarantees of any kind +// (whether express, implied or statutory) including, without limitation, +// warranties of merchantability, non-infringement, or fitness for a particular +// purpose, are specifically disclaimed. +// +// Copyright 2020 Garmin Canada Inc. +//////////////////////////////////////////////////////////////////////////////// +// ****WARNING**** This file is auto-generated! Do NOT edit this file. +// Profile Version = 21.40Release +// Tag = production/akw/21.40.00-0-g813c158 +// Product = EXAMPLE +// Alignment = 4 bytes, padding disabled. +//////////////////////////////////////////////////////////////////////////////// + + +#include "string.h" +#include "fit_product.h" + + +/////////////////////////////////////////////////////////////////////// +// Public Constants +/////////////////////////////////////////////////////////////////////// + +const FIT_UINT8 fit_base_type_sizes[FIT_BASE_TYPES] = +{ + sizeof(FIT_ENUM), + sizeof(FIT_SINT8), + sizeof(FIT_UINT8), + sizeof(FIT_SINT16), + sizeof(FIT_UINT16), + sizeof(FIT_SINT32), + sizeof(FIT_UINT32), + sizeof(FIT_STRING), + sizeof(FIT_FLOAT32), + sizeof(FIT_FLOAT64), + sizeof(FIT_UINT8Z), + sizeof(FIT_UINT16Z), + sizeof(FIT_UINT32Z), + sizeof(FIT_BYTE), + sizeof(FIT_SINT64), + sizeof(FIT_UINT64), + sizeof(FIT_UINT64Z), +}; + + +typedef union + { + FIT_UINT8 uint8_value[8]; + FIT_FLOAT64 float64_value; + FIT_FLOAT32 float32_value; + } FIT_INVALID_FLOAT; + +static const FIT_INVALID_FLOAT invalid_float = + { + { + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF + } + }; + +const FIT_ENUM fit_enum_invalid = FIT_ENUM_INVALID; +const FIT_SINT8 fit_sint8_invalid = FIT_SINT8_INVALID; +const FIT_UINT8 fit_uint8_invalid = FIT_UINT8_INVALID; +const FIT_SINT16 fit_sint16_invalid = FIT_SINT16_INVALID; +const FIT_UINT16 fit_uint16_invalid = FIT_UINT16_INVALID; +const FIT_SINT32 fit_sint32_invalid = FIT_SINT32_INVALID; +const FIT_UINT32 fit_uint32_invalid = FIT_UINT32_INVALID; +const FIT_STRING fit_string_invalid = FIT_STRING_INVALID; +const FIT_UINT8Z fit_uint8z_invalid = FIT_UINT8Z_INVALID; +const FIT_UINT16Z fit_uint16z_invalid = FIT_UINT16Z_INVALID; +const FIT_UINT32Z fit_uint32z_invalid = FIT_UINT32Z_INVALID; +const FIT_BYTE fit_byte_invalid = FIT_BYTE_INVALID; +const FIT_SINT64 fit_sint64_invalid = FIT_SINT64_INVALID; +const FIT_UINT64 fit_uint64_invalid = FIT_UINT64_INVALID; +const FIT_UINT64Z fit_uint64z_invalid = FIT_UINT64Z_INVALID; + +const FIT_CONST_UINT8_PTR fit_base_type_invalids[FIT_BASE_TYPES] = +{ + (FIT_CONST_UINT8_PTR)&fit_enum_invalid, + (FIT_CONST_UINT8_PTR)&fit_sint8_invalid, + (FIT_CONST_UINT8_PTR)&fit_uint8_invalid, + (FIT_CONST_UINT8_PTR)&fit_sint16_invalid, + (FIT_CONST_UINT8_PTR)&fit_uint16_invalid, + (FIT_CONST_UINT8_PTR)&fit_sint32_invalid, + (FIT_CONST_UINT8_PTR)&fit_uint32_invalid, + (FIT_CONST_UINT8_PTR)&fit_string_invalid, + (FIT_CONST_UINT8_PTR)&invalid_float.float32_value, + (FIT_CONST_UINT8_PTR)&invalid_float.float64_value, + (FIT_CONST_UINT8_PTR)&fit_uint8z_invalid, + (FIT_CONST_UINT8_PTR)&fit_uint16z_invalid, + (FIT_CONST_UINT8_PTR)&fit_uint32z_invalid, + (FIT_CONST_UINT8_PTR)&fit_byte_invalid, + (FIT_CONST_UINT8_PTR)&fit_sint64_invalid, + (FIT_CONST_UINT8_PTR)&fit_uint64_invalid, + (FIT_CONST_UINT8_PTR)&fit_uint64z_invalid, +}; + + +/////////////////////////////////////////////////////////////////////// +// Public Functions +/////////////////////////////////////////////////////////////////////// + +FIT_UINT8 Fit_GetArch(void) +{ + const FIT_UINT16 arch = 0x0100; + return (*(FIT_UINT8 *)&arch); +} + +const FIT_MESG_DEF *Fit_GetMesgDef(FIT_UINT16 global_mesg_num) +{ + FIT_UINT8 index; + + for (index = 0; index < FIT_MESGS; index++) + { + if (fit_mesg_defs[index]->global_mesg_num == global_mesg_num) + return (FIT_MESG_DEF *) fit_mesg_defs[index]; + } + + return (FIT_MESG_DEF *) FIT_NULL; +} + +const FIT_MESG_DEF *Fit_GetMesgDefFromEnum(FIT_UINT32 fit_mesg_num) +{ + //Verify enum in range + if (FIT_MESGS > fit_mesg_num) + { + return fit_mesg_defs[fit_mesg_num]; + } + + return (FIT_MESG_DEF *)FIT_NULL; +} + +FIT_UINT16 Fit_GetMesgDefSize(const FIT_MESG_DEF *mesg_def) +{ + if (mesg_def == FIT_NULL) + return 0; + + return FIT_STRUCT_OFFSET(fields, FIT_MESG_DEF) + (FIT_UINT16)mesg_def->num_fields * FIT_FIELD_DEF_SIZE; +} + +#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) +FIT_UINT16 Fit_GetMesgSize(FIT_UINT16 global_mesg_num) +{ + const FIT_MESG_DEF *mesg_def; + FIT_UINT8 field; + FIT_UINT16 size = 0; + + mesg_def = Fit_GetMesgDef(global_mesg_num); + + if (mesg_def == FIT_NULL) + return 0; + + for (field = 0; field < mesg_def->num_fields; field++) + { + size += mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(size, field)]; + } + + return size; +} +#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) + +#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) +FIT_UINT16 Fit_GetMesgSizeFromEnum(FIT_UINT32 fit_mesg_num) +{ + const FIT_MESG_DEF *mesg_def; + FIT_UINT8 field; + FIT_UINT16 size = 0; + + mesg_def = Fit_GetMesgDefFromEnum(fit_mesg_num); + + if (mesg_def == FIT_NULL) + return 0; + + for (field = 0; field < mesg_def->num_fields; field++) + { + size += mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(size, field)]; + } + + return size; +} +#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) + +FIT_BOOL Fit_InitMesg(const FIT_MESG_DEF *mesg_def, void *mesg) +{ + FIT_UINT8 *mesg_buf = (FIT_UINT8 *) mesg; + FIT_UINT8 field; + + if (mesg_def == FIT_NULL) + return FIT_FALSE; + + for (field = 0; field < mesg_def->num_fields; field++) + { + FIT_UINT8 base_type_num = mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(base_type, field)] & FIT_BASE_TYPE_NUM_MASK; + FIT_UINT8 base_type_size; + FIT_UINT8 field_size; + + if (base_type_num >= FIT_BASE_TYPES) + return FIT_FALSE; + + base_type_size = fit_base_type_sizes[base_type_num]; + + for (field_size = 0; field_size < mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(size, field)]; field_size += base_type_size) + { + memcpy(mesg_buf, fit_base_type_invalids[base_type_num], base_type_size); + mesg_buf += base_type_size; + } + } + + return FIT_TRUE; +} + +#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) +FIT_UINT16 Fit_GetFieldOffset(const FIT_MESG_DEF *mesg_def, FIT_UINT8 field_def_num) +{ + FIT_UINT16 offset = 0; + FIT_UINT8 field; + + if (mesg_def == FIT_NULL) + return FIT_UINT16_INVALID; + + for (field = 0; field < mesg_def->num_fields; field++) + { + if (mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(field_def_num, field)] == field_def_num) + return offset; + + offset += mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(size, field)]; + } + + return FIT_UINT16_INVALID; +} +#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) + +FIT_FIELD_DEF Fit_GetFieldDef(const FIT_MESG_DEF *mesg_def, FIT_UINT8 field_def_num) +{ + FIT_FIELD_DEF field_def; + const FIT_UINT8 *field_def_ptr = mesg_def->fields; + FIT_UINT8 field; + + field_def.field_def_num = FIT_FIELD_NUM_INVALID; + field_def.size = 0; + field_def.base_type = FIT_BASE_TYPE_UINT8; + + if (mesg_def != FIT_NULL) + { + for (field = 0; field < mesg_def->num_fields; field++) + { + if (mesg_def->fields[FIT_MESG_DEF_FIELD_OFFSET(field_def_num, field)] == field_def_num) + { + memcpy(&field_def, field_def_ptr, FIT_FIELD_DEF_SIZE); + break; + } + + field_def_ptr += FIT_FIELD_DEF_SIZE; + } + } + + return field_def; +} + +FIT_UINT8 Fit_LookupMessage(FIT_UINT16 global_mesg_num, FIT_UINT16 message_index, FIT_UINT32 *offset, FIT_READ_BYTES_FUNC read_bytes_func, FIT_BOOL read_header) +{ + FIT_UINT16 global_mesg_nums[FIT_MAX_LOCAL_MESGS]; + FIT_UINT16 sizes[FIT_MAX_LOCAL_MESGS]; + FIT_UINT16 current_message_index = FIT_UINT16_INVALID; + #if defined(FIT_MESSAGE_INDEX) + FIT_UINT16 message_index_offset = FIT_UINT16_INVALID; + #endif + FIT_UINT8 i; + + *offset = 0; + + if (read_header) + { + if(read_bytes_func(offset, FIT_STRUCT_OFFSET(header_size, FIT_FILE_HDR), sizeof(FIT_UINT8)) != sizeof(FIT_UINT8)) + return FIT_UINT8_INVALID; + } + + for (i = 0; i < FIT_MAX_LOCAL_MESGS; i++) + { + global_mesg_nums[i] = FIT_UINT16_INVALID; + sizes[i] = 0; + } + + for (;;) + { + FIT_UINT8 header; + FIT_UINT8 local_mesg_num; + + if (read_bytes_func(&header, *offset, sizeof(header)) != sizeof(header)) + return FIT_UINT8_INVALID; + + *offset += sizeof(header); + + if ((header & (FIT_HDR_TIME_REC_BIT | FIT_HDR_TYPE_DEF_BIT)) == FIT_HDR_TYPE_DEF_BIT) + { + FIT_MESG_DEF mesg_def_header; + FIT_FIELD_DEF field_def; + #if defined(FIT_MESSAGE_INDEX) + FIT_UINT16 current_message_index_offset = FIT_UINT16_INVALID; // Initialize to invalid. If not found, it will remain invalid. + #endif + FIT_UINT16 current_size; + FIT_UINT8 current_field_def; + + local_mesg_num = header & FIT_HDR_TYPE_MASK; + + if (read_bytes_func(&mesg_def_header, *offset, FIT_MESG_DEF_HEADER_SIZE) != FIT_MESG_DEF_HEADER_SIZE) + return FIT_UINT8_INVALID; + + *offset += FIT_MESG_DEF_HEADER_SIZE; + global_mesg_nums[local_mesg_num] = mesg_def_header.global_mesg_num; + current_size = 0; + + for (current_field_def = 0; current_field_def < mesg_def_header.num_fields; current_field_def++) + { + if (read_bytes_func(&field_def, *offset, FIT_FIELD_DEF_SIZE) != FIT_FIELD_DEF_SIZE) + return FIT_UINT8_INVALID; + + #if defined(FIT_MESSAGE_INDEX) + if (field_def.field_def_num == FIT_FIELD_NUM_MESSAGE_INDEX) + current_message_index_offset = current_size; + #endif + + current_size += field_def.size; + *offset += FIT_FIELD_DEF_SIZE; + } + + sizes[local_mesg_num] = current_size; + + #if defined(FIT_MESSAGE_INDEX) + if (global_mesg_nums[local_mesg_num] == global_mesg_num) + message_index_offset = current_message_index_offset; + #endif + } + else + { + if (header & FIT_HDR_TIME_REC_BIT) + local_mesg_num = (header & FIT_HDR_TIME_TYPE_MASK) >> FIT_HDR_TIME_TYPE_SHIFT; + else + local_mesg_num = header & FIT_HDR_TYPE_MASK; + + if (global_mesg_nums[local_mesg_num] == global_mesg_num) + { + // If the requested message index is invalid, we've found a match. + if (message_index == FIT_UINT16_INVALID) + return local_mesg_num; + + #if defined(FIT_MESSAGE_INDEX) + if (message_index_offset != FIT_UINT16_INVALID) + { + // Read the message index. + if (read_bytes_func(¤t_message_index, *offset + message_index_offset, sizeof(current_message_index)) != sizeof(current_message_index)) + return FIT_UINT8_INVALID; + } + else + #endif + { + current_message_index++; + } + + #if defined(FIT_MESSAGE_INDEX) + if ((message_index & FIT_MESSAGE_INDEX_MASK) == (current_message_index & FIT_MESSAGE_INDEX_MASK)) + #else + if (message_index == current_message_index) + #endif + { + return local_mesg_num; + } + } + else if (global_mesg_nums[local_mesg_num] == FIT_UINT16_INVALID) + { + return FIT_UINT8_INVALID; + } + + *offset += sizes[local_mesg_num]; + } + } +} + +FIT_UINT32 Fit_GetFileMesgOffset(const FIT_FILE_DEF *file_def, FIT_UINT16 mesg_num, FIT_UINT16 mesg_index) +{ + FIT_UINT32 offset = 0; + FIT_UINT16 i = 0; + + while (i < file_def->mesg_count) + { + if (mesg_num == file_def->mesgs[i].num) + { + offset = file_def->mesgs[i].data_file_offset; + break; + } + + i++; + } + + if (i >= file_def->mesg_count) + return FIT_UINT32_INVALID; + + // Make sure mesg_index is valid for this mesg num and file definition + if (mesg_index >= file_def->mesgs[i].count) + return FIT_UINT32_INVALID; + + // Compute size of each message (header byte + data) + i = FIT_HDR_SIZE + Fit_GetMesgSize(mesg_num); + + offset += mesg_index * i; + + return offset; +} diff --git a/Sources/FitFileParserTypes/fit_example.c b/Sources/FitFileParserTypes/fit_example.c index 58ca3c5..1c83160 100644 --- a/Sources/FitFileParserTypes/fit_example.c +++ b/Sources/FitFileParserTypes/fit_example.c @@ -1,1512 +1,1515 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.40Release -// Tag = production/akw/21.40.00-0-g813c158 -// Product = EXAMPLE -// Alignment = 4 bytes, padding disabled. -//////////////////////////////////////////////////////////////////////////////// - - -#include "string.h" -#include "fit_product.h" -#include "fit_include.h" - - -/////////////////////////////////////////////////////////////////////// -// Messages -/////////////////////////////////////////////////////////////////////// - -static const FIT_PAD_MESG_DEF pad_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_PAD, // global_mesg_num - 0 // num_fields -}; - - -static const FIT_FILE_ID_MESG_DEF file_id_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_FILE_ID, // global_mesg_num - 7, // num_fields - { // field_def_num, size, base_type - FIT_FILE_ID_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z, - FIT_FILE_ID_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_FILE_ID_FIELD_NUM_PRODUCT_NAME, (sizeof(FIT_STRING)*20), FIT_BASE_TYPE_STRING, - FIT_FILE_ID_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, - FIT_FILE_ID_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_FILE_ID_FIELD_NUM_NUMBER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_FILE_ID_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_FILE_CREATOR_MESG_DEF file_creator_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_FILE_CREATOR, // global_mesg_num - 2, // num_fields - { // field_def_num, size, base_type - FIT_FILE_CREATOR_FIELD_NUM_SOFTWARE_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_FILE_CREATOR_FIELD_NUM_HARDWARE_VERSION, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_SOFTWARE_MESG_DEF software_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SOFTWARE, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_SOFTWARE_FIELD_NUM_PART_NUMBER, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_SOFTWARE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SOFTWARE_FIELD_NUM_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_SLAVE_DEVICE_MESG_DEF slave_device_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SLAVE_DEVICE, // global_mesg_num - 2, // num_fields - { // field_def_num, size, base_type - FIT_SLAVE_DEVICE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, - FIT_SLAVE_DEVICE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_CAPABILITIES_MESG_DEF capabilities_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_CAPABILITIES, // global_mesg_num - 4, // num_fields - { // field_def_num, size, base_type - FIT_CAPABILITIES_FIELD_NUM_LANGUAGES, (sizeof(FIT_UINT8Z)*4), FIT_BASE_TYPE_UINT8Z, - FIT_CAPABILITIES_FIELD_NUM_WORKOUTS_SUPPORTED, (sizeof(FIT_WORKOUT_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z, - FIT_CAPABILITIES_FIELD_NUM_CONNECTIVITY_SUPPORTED, (sizeof(FIT_CONNECTIVITY_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z, - FIT_CAPABILITIES_FIELD_NUM_SPORTS, (sizeof(FIT_SPORT_BITS_0)*1), FIT_BASE_TYPE_UINT8Z, - } -}; - -static const FIT_FILE_CAPABILITIES_MESG_DEF file_capabilities_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_FILE_CAPABILITIES, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_FILE_CAPABILITIES_FIELD_NUM_DIRECTORY, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_SIZE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_FILE_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_FILE_CAPABILITIES_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, - FIT_FILE_CAPABILITIES_FIELD_NUM_FLAGS, (sizeof(FIT_FILE_FLAGS)*1), FIT_BASE_TYPE_UINT8Z, - } -}; - -static const FIT_MESG_CAPABILITIES_MESG_DEF mesg_capabilities_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_MESG_CAPABILITIES, // global_mesg_num - 5, // num_fields - { // field_def_num, size, base_type - FIT_MESG_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_MESG_CAPABILITIES_FIELD_NUM_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16, - FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_MESG_CAPABILITIES_FIELD_NUM_FILE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, - FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT_TYPE, (sizeof(FIT_MESG_COUNT)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_FIELD_CAPABILITIES_MESG_DEF field_capabilities_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_FIELD_CAPABILITIES, // global_mesg_num - 5, // num_fields - { // field_def_num, size, base_type - FIT_FIELD_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_FIELD_CAPABILITIES_FIELD_NUM_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16, - FIT_FIELD_CAPABILITIES_FIELD_NUM_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_FIELD_CAPABILITIES_FIELD_NUM_FILE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, - FIT_FIELD_CAPABILITIES_FIELD_NUM_FIELD_NUM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_DEVICE_SETTINGS_MESG_DEF device_settings_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_DEVICE_SETTINGS, // global_mesg_num - 17, // num_fields - { // field_def_num, size, base_type - FIT_DEVICE_SETTINGS_FIELD_NUM_UTC_OFFSET, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_OFFSET, (sizeof(FIT_UINT32)*2), FIT_BASE_TYPE_UINT32, - FIT_DEVICE_SETTINGS_FIELD_NUM_CLOCK_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_DEVICE_SETTINGS_FIELD_NUM_PAGES_ENABLED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVICE_SETTINGS_FIELD_NUM_DEFAULT_PAGE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_STEPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVE_TIME_ZONE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_MODE, (sizeof(FIT_TIME_MODE)*2), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_ZONE_OFFSET, (sizeof(FIT_SINT8)*2), FIT_BASE_TYPE_SINT8, - FIT_DEVICE_SETTINGS_FIELD_NUM_BACKLIGHT_MODE, (sizeof(FIT_BACKLIGHT_MODE)*1), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVITY_TRACKER_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_SETTINGS_FIELD_NUM_MOVE_ALERT_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_SETTINGS_FIELD_NUM_DATE_MODE, (sizeof(FIT_DATE_MODE)*1), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_SETTINGS_FIELD_NUM_DISPLAY_ORIENTATION, (sizeof(FIT_DISPLAY_ORIENTATION)*1), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_SETTINGS_FIELD_NUM_MOUNTING_SIDE, (sizeof(FIT_SIDE)*1), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_SETTINGS_FIELD_NUM_TAP_SENSITIVITY, (sizeof(FIT_TAP_SENSITIVITY)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_USER_PROFILE_MESG_DEF user_profile_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_USER_PROFILE, // global_mesg_num - 25, // num_fields - { // field_def_num, size, base_type - FIT_USER_PROFILE_FIELD_NUM_FRIENDLY_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_USER_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_USER_PROFILE_FIELD_NUM_WEIGHT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_USER_PROFILE_FIELD_NUM_LOCAL_ID, (sizeof(FIT_USER_LOCAL_ID)*1), FIT_BASE_TYPE_UINT16, - FIT_USER_PROFILE_FIELD_NUM_USER_RUNNING_STEP_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_USER_PROFILE_FIELD_NUM_USER_WALKING_STEP_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_USER_PROFILE_FIELD_NUM_GENDER, (sizeof(FIT_GENDER)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_AGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_USER_PROFILE_FIELD_NUM_HEIGHT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_USER_PROFILE_FIELD_NUM_LANGUAGE, (sizeof(FIT_LANGUAGE)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_ELEV_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_WEIGHT_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_RESTING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_RUNNING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_BIKING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_USER_PROFILE_FIELD_NUM_HR_SETTING, (sizeof(FIT_DISPLAY_HEART)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_SPEED_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_DIST_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_POWER_SETTING, (sizeof(FIT_DISPLAY_POWER)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_ACTIVITY_CLASS, (sizeof(FIT_ACTIVITY_CLASS)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_POSITION_SETTING, (sizeof(FIT_DISPLAY_POSITION)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_TEMPERATURE_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - FIT_USER_PROFILE_FIELD_NUM_GLOBAL_ID, (sizeof(FIT_BYTE)*6), FIT_BASE_TYPE_BYTE, - FIT_USER_PROFILE_FIELD_NUM_HEIGHT_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_HRM_PROFILE_MESG_DEF hrm_profile_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_HRM_PROFILE, // global_mesg_num - 5, // num_fields - { // field_def_num, size, base_type - FIT_HRM_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, - FIT_HRM_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_HRM_PROFILE_FIELD_NUM_LOG_HRV, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - } -}; - -static const FIT_SDM_PROFILE_MESG_DEF sdm_profile_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SDM_PROFILE, // global_mesg_num - 8, // num_fields - { // field_def_num, size, base_type - FIT_SDM_PROFILE_FIELD_NUM_ODOMETER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SDM_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, - FIT_SDM_PROFILE_FIELD_NUM_SDM_CAL_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SDM_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_SDM_PROFILE_FIELD_NUM_SPEED_SOURCE, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_SDM_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_BIKE_PROFILE_MESG_DEF bike_profile_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_BIKE_PROFILE, // global_mesg_num - 32, // num_fields - { // field_def_num, size, base_type - FIT_BIKE_PROFILE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_BIKE_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, - FIT_BIKE_PROFILE_FIELD_NUM_CUSTOM_WHEELSIZE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEELSIZE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_WEIGHT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BIKE_PROFILE_FIELD_NUM_POWER_CAL_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BIKE_PROFILE_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEEL_CAL, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_AUTO_POWER_ZERO, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_BIKE_PROFILE_FIELD_NUM_SPD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_CAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_SPDCAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_POWER_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_CRANK_LENGTH, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_BIKE_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_BIKE_PROFILE_FIELD_NUM_SHIMANO_DI2_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_CONNECTIVITY_MESG_DEF connectivity_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_CONNECTIVITY, // global_mesg_num - 13, // num_fields - { // field_def_num, size, base_type - FIT_CONNECTIVITY_FIELD_NUM_NAME, (sizeof(FIT_STRING)*24), FIT_BASE_TYPE_STRING, - FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_LE_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_ANT_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_LIVE_TRACKING_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_WEATHER_CONDITIONS_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_WEATHER_ALERTS_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_AUTO_ACTIVITY_UPLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_COURSE_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_WORKOUT_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_GPS_EPHEMERIS_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_INCIDENT_DETECTION_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_CONNECTIVITY_FIELD_NUM_GROUPTRACK_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_ZONES_TARGET_MESG_DEF zones_target_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_ZONES_TARGET, // global_mesg_num - 5, // num_fields - { // field_def_num, size, base_type - FIT_ZONES_TARGET_FIELD_NUM_FUNCTIONAL_THRESHOLD_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_ZONES_TARGET_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_ZONES_TARGET_FIELD_NUM_THRESHOLD_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_ZONES_TARGET_FIELD_NUM_HR_CALC_TYPE, (sizeof(FIT_HR_ZONE_CALC)*1), FIT_BASE_TYPE_ENUM, - FIT_ZONES_TARGET_FIELD_NUM_PWR_CALC_TYPE, (sizeof(FIT_PWR_ZONE_CALC)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_SPORT_MESG_DEF sport_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SPORT, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_SPORT_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_SPORT_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_SPORT_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_HR_ZONE_MESG_DEF hr_zone_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_HR_ZONE, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_HR_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_HR_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_HR_ZONE_FIELD_NUM_HIGH_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_SPEED_ZONE_MESG_DEF speed_zone_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SPEED_ZONE, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_SPEED_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_SPEED_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SPEED_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_CADENCE_ZONE_MESG_DEF cadence_zone_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_CADENCE_ZONE, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_CADENCE_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_CADENCE_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_CADENCE_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_POWER_ZONE_MESG_DEF power_zone_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_POWER_ZONE, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_POWER_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_POWER_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_POWER_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_MET_ZONE_MESG_DEF met_zone_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_MET_ZONE, // global_mesg_num - 4, // num_fields - { // field_def_num, size, base_type - FIT_MET_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_MET_ZONE_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_MET_ZONE_FIELD_NUM_HIGH_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_MET_ZONE_FIELD_NUM_FAT_CALORIES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_DIVE_SETTINGS_MESG_DEF dive_settings_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_DIVE_SETTINGS, // global_mesg_num - 2, // num_fields - { // field_def_num, size, base_type - FIT_DIVE_SETTINGS_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_DIVE_SETTINGS_FIELD_NUM_HEART_RATE_SOURCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_GOAL_MESG_DEF goal_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_GOAL, // global_mesg_num - 13, // num_fields - { // field_def_num, size, base_type - FIT_GOAL_FIELD_NUM_START_DATE, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_GOAL_FIELD_NUM_END_DATE, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_GOAL_FIELD_NUM_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_GOAL_FIELD_NUM_TARGET_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_GOAL_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_GOAL_FIELD_NUM_RECURRENCE_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_GOAL_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_GOAL_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_GOAL_FIELD_NUM_TYPE, (sizeof(FIT_GOAL)*1), FIT_BASE_TYPE_ENUM, - FIT_GOAL_FIELD_NUM_REPEAT, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_GOAL_FIELD_NUM_RECURRENCE, (sizeof(FIT_GOAL_RECURRENCE)*1), FIT_BASE_TYPE_ENUM, - FIT_GOAL_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_GOAL_FIELD_NUM_SOURCE, (sizeof(FIT_GOAL_SOURCE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_ACTIVITY_MESG_DEF activity_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_ACTIVITY, // global_mesg_num - 8, // num_fields - { // field_def_num, size, base_type - FIT_ACTIVITY_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_ACTIVITY_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_ACTIVITY_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_ACTIVITY_FIELD_NUM_NUM_SESSIONS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_ACTIVITY_FIELD_NUM_TYPE, (sizeof(FIT_ACTIVITY)*1), FIT_BASE_TYPE_ENUM, - FIT_ACTIVITY_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, - FIT_ACTIVITY_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_ACTIVITY_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_SESSION_MESG_DEF session_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SESSION, // global_mesg_num - 90, // num_fields - { // field_def_num, size, base_type - FIT_SESSION_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SESSION_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SESSION_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_NEC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SESSION_FIELD_NUM_NEC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SESSION_FIELD_NUM_SWC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SESSION_FIELD_NUM_SWC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SESSION_FIELD_NUM_AVG_STROKE_COUNT, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_AVG_LAP_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_ENHANCED_AVG_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_ENHANCED_MAX_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_ENHANCED_AVG_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_ENHANCED_MIN_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_ENHANCED_MAX_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SESSION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_FIRST_LAP_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_NUM_LAPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_TRAINING_STRESS_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_INTENSITY_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_STROKE_DISTANCE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_POOL_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_THRESHOLD_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_NUM_ACTIVE_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SESSION_FIELD_NUM_BEST_LAP_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_MAX_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_VERTICAL_OSCILLATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_AVG_VAM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SESSION_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, - FIT_SESSION_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_SESSION_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_SESSION_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_SESSION_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_TOTAL_TRAINING_EFFECT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_TRIGGER, (sizeof(FIT_SESSION_TRIGGER)*1), FIT_BASE_TYPE_ENUM, - FIT_SESSION_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM, - FIT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - FIT_SESSION_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_SESSION_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_SESSION_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_OPPONENT_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, - FIT_SESSION_FIELD_NUM_AVG_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_MAX_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_SPORT_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SESSION_FIELD_NUM_TOTAL_ANAEROBIC_TRAINING_EFFECT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_LAP_MESG_DEF lap_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_LAP, // global_mesg_num - 83, // num_fields - { // field_def_num, size, base_type - FIT_LAP_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_LAP_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_LAP_FIELD_NUM_END_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_LAP_FIELD_NUM_END_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_ENHANCED_AVG_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_ENHANCED_MAX_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_ENHANCED_AVG_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_ENHANCED_MIN_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_ENHANCED_MAX_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LAP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_NUM_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_FIRST_LENGTH_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_STROKE_DISTANCE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_NUM_ACTIVE_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_LAP_FIELD_NUM_REPETITION_NUM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_WKT_STEP_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_VERTICAL_OSCILLATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_STANCE_TIME_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_STANCE_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_TOTAL_HEMOGLOBIN_CONC, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_MIN_TOTAL_HEMOGLOBIN_CONC, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_MAX_TOTAL_HEMOGLOBIN_CONC, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_SATURATED_HEMOGLOBIN_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_MIN_SATURATED_HEMOGLOBIN_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_MAX_SATURATED_HEMOGLOBIN_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_AVG_VAM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LAP_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, - FIT_LAP_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_LAP_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_INTENSITY, (sizeof(FIT_INTENSITY)*1), FIT_BASE_TYPE_ENUM, - FIT_LAP_FIELD_NUM_LAP_TRIGGER, (sizeof(FIT_LAP_TRIGGER)*1), FIT_BASE_TYPE_ENUM, - FIT_LAP_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_LAP_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM, - FIT_LAP_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_LAP_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_LAP_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_LAP_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_LENGTH_MESG_DEF length_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_LENGTH, // global_mesg_num - 18, // num_fields - { // field_def_num, size, base_type - FIT_LENGTH_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_LENGTH_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_LENGTH_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LENGTH_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_LENGTH_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_LENGTH_FIELD_NUM_TOTAL_STROKES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LENGTH_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LENGTH_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LENGTH_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LENGTH_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LENGTH_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LENGTH_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_LENGTH_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, - FIT_LENGTH_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_LENGTH_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM, - FIT_LENGTH_FIELD_NUM_AVG_SWIMMING_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LENGTH_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_LENGTH_FIELD_NUM_LENGTH_TYPE, (sizeof(FIT_LENGTH_TYPE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_RECORD_MESG_DEF record_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_RECORD, // global_mesg_num - 48, // num_fields - { // field_def_num, size, base_type - FIT_RECORD_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_RECORD_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_RECORD_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_RECORD_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_RECORD_FIELD_NUM_TIME_FROM_COURSE, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_RECORD_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_RECORD_FIELD_NUM_ACCUMULATED_POWER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_RECORD_FIELD_NUM_ENHANCED_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_RECORD_FIELD_NUM_ENHANCED_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_RECORD_FIELD_NUM_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_RECORD_FIELD_NUM_COMPRESSED_ACCUMULATED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_RECORD_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_VERTICAL_OSCILLATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_STANCE_TIME_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_STANCE_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_CADENCE256, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MIN, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MAX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MIN, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MAX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_RECORD_FIELD_NUM_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_COMPRESSED_SPEED_DISTANCE, (sizeof(FIT_BYTE)*3), FIT_BASE_TYPE_BYTE, - FIT_RECORD_FIELD_NUM_RESISTANCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_CYCLE_LENGTH, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_RECORD_FIELD_NUM_SPEED_1S, (sizeof(FIT_UINT8)*5), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_ACTIVITY_TYPE, (sizeof(FIT_ACTIVITY_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_RECORD_FIELD_NUM_LEFT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_RIGHT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_LEFT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_RIGHT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_COMBINED_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_TIME128, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_STROKE_TYPE, (sizeof(FIT_STROKE_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_RECORD_FIELD_NUM_ZONE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_RECORD_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_EVENT_MESG_DEF event_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_EVENT, // global_mesg_num - 12, // num_fields - { // field_def_num, size, base_type - FIT_EVENT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_EVENT_FIELD_NUM_DATA, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_EVENT_FIELD_NUM_DATA16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_EVENT_FIELD_NUM_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_EVENT_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_EVENT_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, - FIT_EVENT_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_EVENT_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EVENT_FIELD_NUM_FRONT_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_EVENT_FIELD_NUM_FRONT_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_EVENT_FIELD_NUM_REAR_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_EVENT_FIELD_NUM_REAR_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - } -}; - -static const FIT_DEVICE_INFO_MESG_DEF device_info_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_DEVICE_INFO, // global_mesg_num - 18, // num_fields - { // field_def_num, size, base_type - FIT_DEVICE_INFO_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_DEVICE_INFO_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z, - FIT_DEVICE_INFO_FIELD_NUM_CUM_OPERATING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_DEVICE_INFO_FIELD_NUM_PRODUCT_NAME, (sizeof(FIT_STRING)*20), FIT_BASE_TYPE_STRING, - FIT_DEVICE_INFO_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVICE_INFO_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVICE_INFO_FIELD_NUM_SOFTWARE_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVICE_INFO_FIELD_NUM_BATTERY_VOLTAGE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVICE_INFO_FIELD_NUM_ANT_DEVICE_NUMBER, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, - FIT_DEVICE_INFO_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8, - FIT_DEVICE_INFO_FIELD_NUM_DEVICE_TYPE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_DEVICE_INFO_FIELD_NUM_HARDWARE_VERSION, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_DEVICE_INFO_FIELD_NUM_BATTERY_STATUS, (sizeof(FIT_BATTERY_STATUS)*1), FIT_BASE_TYPE_UINT8, - FIT_DEVICE_INFO_FIELD_NUM_SENSOR_POSITION, (sizeof(FIT_BODY_LOCATION)*1), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_INFO_FIELD_NUM_DESCRIPTOR, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, - FIT_DEVICE_INFO_FIELD_NUM_ANT_TRANSMISSION_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, - FIT_DEVICE_INFO_FIELD_NUM_ANT_NETWORK, (sizeof(FIT_ANT_NETWORK)*1), FIT_BASE_TYPE_ENUM, - FIT_DEVICE_INFO_FIELD_NUM_SOURCE_TYPE, (sizeof(FIT_SOURCE_TYPE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_TRAINING_FILE_MESG_DEF training_file_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_TRAINING_FILE, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_TRAINING_FILE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_TRAINING_FILE_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z, - FIT_TRAINING_FILE_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_TRAINING_FILE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, - FIT_TRAINING_FILE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_TRAINING_FILE_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_HRV_MESG_DEF hrv_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_HRV, // global_mesg_num - 1, // num_fields - { // field_def_num, size, base_type - FIT_HRV_FIELD_NUM_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_WEATHER_CONDITIONS_MESG_DEF weather_conditions_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_WEATHER_CONDITIONS, // global_mesg_num - 16, // num_fields - { // field_def_num, size, base_type - FIT_WEATHER_CONDITIONS_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_WEATHER_CONDITIONS_FIELD_NUM_LOCATION, (sizeof(FIT_STRING)*64), FIT_BASE_TYPE_STRING, - FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_AT_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_DIRECTION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEATHER_CONDITIONS_FIELD_NUM_WEATHER_REPORT, (sizeof(FIT_WEATHER_REPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_WEATHER_CONDITIONS_FIELD_NUM_CONDITION, (sizeof(FIT_WEATHER_STATUS)*1), FIT_BASE_TYPE_ENUM, - FIT_WEATHER_CONDITIONS_FIELD_NUM_PRECIPITATION_PROBABILITY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE_FEELS_LIKE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_WEATHER_CONDITIONS_FIELD_NUM_RELATIVE_HUMIDITY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_WEATHER_CONDITIONS_FIELD_NUM_DAY_OF_WEEK, (sizeof(FIT_DAY_OF_WEEK)*1), FIT_BASE_TYPE_ENUM, - FIT_WEATHER_CONDITIONS_FIELD_NUM_HIGH_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_WEATHER_CONDITIONS_FIELD_NUM_LOW_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - } -}; - -static const FIT_WEATHER_ALERT_MESG_DEF weather_alert_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_WEATHER_ALERT, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_WEATHER_ALERT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_WEATHER_ALERT_FIELD_NUM_REPORT_ID, (sizeof(FIT_STRING)*12), FIT_BASE_TYPE_STRING, - FIT_WEATHER_ALERT_FIELD_NUM_ISSUE_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_WEATHER_ALERT_FIELD_NUM_EXPIRE_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_WEATHER_ALERT_FIELD_NUM_SEVERITY, (sizeof(FIT_WEATHER_SEVERITY)*1), FIT_BASE_TYPE_ENUM, - FIT_WEATHER_ALERT_FIELD_NUM_TYPE, (sizeof(FIT_WEATHER_SEVERE_TYPE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_NMEA_SENTENCE_MESG_DEF nmea_sentence_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_NMEA_SENTENCE, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP_MS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_NMEA_SENTENCE_FIELD_NUM_SENTENCE, (sizeof(FIT_STRING)*83), FIT_BASE_TYPE_STRING, - } -}; - -static const FIT_AVIATION_ATTITUDE_MESG_DEF aviation_attitude_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_AVIATION_ATTITUDE, // global_mesg_num - 12, // num_fields - { // field_def_num, size, base_type - FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_AVIATION_ATTITUDE_FIELD_NUM_SYSTEM_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP_MS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_AVIATION_ATTITUDE_FIELD_NUM_PITCH, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_AVIATION_ATTITUDE_FIELD_NUM_ROLL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_LATERAL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_NORMAL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_AVIATION_ATTITUDE_FIELD_NUM_TURN_RATE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_AVIATION_ATTITUDE_FIELD_NUM_TRACK, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_AVIATION_ATTITUDE_FIELD_NUM_VALIDITY, (sizeof(FIT_ATTITUDE_VALIDITY)*1), FIT_BASE_TYPE_UINT16, - FIT_AVIATION_ATTITUDE_FIELD_NUM_STAGE, (sizeof(FIT_ATTITUDE_STAGE)*1), FIT_BASE_TYPE_ENUM, - FIT_AVIATION_ATTITUDE_FIELD_NUM_ATTITUDE_STAGE_COMPLETE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_VIDEO_TITLE_MESG_DEF video_title_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_VIDEO_TITLE, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_VIDEO_TITLE_FIELD_NUM_TEXT, (sizeof(FIT_STRING)*80), FIT_BASE_TYPE_STRING, - FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_VIDEO_DESCRIPTION_MESG_DEF video_description_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_VIDEO_DESCRIPTION, // global_mesg_num - 3, // num_fields - { // field_def_num, size, base_type - FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_VIDEO_DESCRIPTION_FIELD_NUM_TEXT, (sizeof(FIT_STRING)*250), FIT_BASE_TYPE_STRING, - } -}; - -static const FIT_SET_MESG_DEF set_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SET, // global_mesg_num - 1, // num_fields - { // field_def_num, size, base_type - FIT_SET_FIELD_NUM_WEIGHT_DISPLAY_UNIT, (sizeof(FIT_FIT_BASE_UNIT)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_COURSE_MESG_DEF course_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_COURSE, // global_mesg_num - 4, // num_fields - { // field_def_num, size, base_type - FIT_COURSE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_COURSE_FIELD_NUM_CAPABILITIES, (sizeof(FIT_COURSE_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z, - FIT_COURSE_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_COURSE_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_COURSE_POINT_MESG_DEF course_point_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_COURSE_POINT, // global_mesg_num - 8, // num_fields - { // field_def_num, size, base_type - FIT_COURSE_POINT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_COURSE_POINT_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_COURSE_POINT_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_COURSE_POINT_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_COURSE_POINT_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_COURSE_POINT_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_COURSE_POINT_FIELD_NUM_TYPE, (sizeof(FIT_COURSE_POINT)*1), FIT_BASE_TYPE_ENUM, - FIT_COURSE_POINT_FIELD_NUM_FAVORITE, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_SEGMENT_ID_MESG_DEF segment_id_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SEGMENT_ID, // global_mesg_num - 9, // num_fields - { // field_def_num, size, base_type - FIT_SEGMENT_ID_FIELD_NUM_USER_PROFILE_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_ID_FIELD_NUM_DEVICE_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_ID_FIELD_NUM_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, - FIT_SEGMENT_ID_FIELD_NUM_UUID, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, - FIT_SEGMENT_ID_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_ID_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_ID_FIELD_NUM_DEFAULT_RACE_LEADER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_ID_FIELD_NUM_DELETE_STATUS, (sizeof(FIT_SEGMENT_DELETE_STATUS)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_ID_FIELD_NUM_SELECTION_TYPE, (sizeof(FIT_SEGMENT_SELECTION_TYPE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_DEF segment_leaderboard_entry_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SEGMENT_LEADERBOARD_ENTRY, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_GROUP_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_ACTIVITY_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_SEGMENT_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, - FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_TYPE, (sizeof(FIT_SEGMENT_LEADERBOARD_TYPE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_SEGMENT_POINT_MESG_DEF segment_point_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SEGMENT_POINT, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_POINT_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_POINT_FIELD_NUM_LEADER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_POINT_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_POINT_FIELD_NUM_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_SEGMENT_LAP_MESG_DEF segment_lap_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SEGMENT_LAP, // global_mesg_num - 73, // num_fields - { // field_def_num, size, base_type - FIT_SEGMENT_LAP_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_NEC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_LAP_FIELD_NUM_NEC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_LAP_FIELD_NUM_SWC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_LAP_FIELD_NUM_SWC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, - FIT_SEGMENT_LAP_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_LAP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, - FIT_SEGMENT_LAP_FIELD_NUM_REPETITION_NUM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_WKT_STEP_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_FRONT_GEAR_SHIFT_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_REAR_GEAR_SHIFT_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_LAP_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_LAP_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_LAP_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_LAP_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_SEGMENT_LAP_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_SPORT_EVENT, (sizeof(FIT_SPORT_EVENT)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_COMBINED_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_STATUS, (sizeof(FIT_SEGMENT_LAP_STATUS)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_LAP_FIELD_NUM_UUID, (sizeof(FIT_STRING)*33), FIT_BASE_TYPE_STRING, - FIT_SEGMENT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_SEGMENT_FILE_MESG_DEF segment_file_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SEGMENT_FILE, // global_mesg_num - 7, // num_fields - { // field_def_num, size, base_type - FIT_SEGMENT_FILE_FIELD_NUM_USER_PROFILE_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_FILE_FIELD_NUM_LEADER_GROUP_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_FILE_FIELD_NUM_LEADER_ACTIVITY_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_SEGMENT_FILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_SEGMENT_FILE_FIELD_NUM_FILE_UUID, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, - FIT_SEGMENT_FILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_SEGMENT_FILE_FIELD_NUM_LEADER_TYPE, (sizeof(FIT_SEGMENT_LEADERBOARD_TYPE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_WORKOUT_MESG_DEF workout_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_WORKOUT, // global_mesg_num - 7, // num_fields - { // field_def_num, size, base_type - FIT_WORKOUT_FIELD_NUM_CAPABILITIES, (sizeof(FIT_WORKOUT_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z, - FIT_WORKOUT_FIELD_NUM_WKT_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_WORKOUT_FIELD_NUM_NUM_VALID_STEPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WORKOUT_FIELD_NUM_POOL_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WORKOUT_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_WORKOUT_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_WORKOUT_FIELD_NUM_POOL_LENGTH_UNIT, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_WORKOUT_SESSION_MESG_DEF workout_session_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_WORKOUT_SESSION, // global_mesg_num - 7, // num_fields - { // field_def_num, size, base_type - FIT_WORKOUT_SESSION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_WORKOUT_SESSION_FIELD_NUM_NUM_VALID_STEPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WORKOUT_SESSION_FIELD_NUM_FIRST_STEP_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WORKOUT_SESSION_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_WORKOUT_SESSION_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, - FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_WORKOUT_STEP_MESG_DEF workout_step_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_WORKOUT_STEP, // global_mesg_num - 12, // num_fields - { // field_def_num, size, base_type - FIT_WORKOUT_STEP_FIELD_NUM_WKT_STEP_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_WORKOUT_STEP_FIELD_NUM_DURATION_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_WORKOUT_STEP_FIELD_NUM_TARGET_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_LOW, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_HIGH, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_WORKOUT_STEP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_WORKOUT_STEP_FIELD_NUM_EXERCISE_CATEGORY, (sizeof(FIT_EXERCISE_CATEGORY)*1), FIT_BASE_TYPE_UINT16, - FIT_WORKOUT_STEP_FIELD_NUM_DURATION_TYPE, (sizeof(FIT_WKT_STEP_DURATION)*1), FIT_BASE_TYPE_ENUM, - FIT_WORKOUT_STEP_FIELD_NUM_TARGET_TYPE, (sizeof(FIT_WKT_STEP_TARGET)*1), FIT_BASE_TYPE_ENUM, - FIT_WORKOUT_STEP_FIELD_NUM_INTENSITY, (sizeof(FIT_INTENSITY)*1), FIT_BASE_TYPE_ENUM, - FIT_WORKOUT_STEP_FIELD_NUM_NOTES, (sizeof(FIT_STRING)*50), FIT_BASE_TYPE_STRING, - FIT_WORKOUT_STEP_FIELD_NUM_EQUIPMENT, (sizeof(FIT_WORKOUT_EQUIPMENT)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_EXERCISE_TITLE_MESG_DEF exercise_title_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_EXERCISE_TITLE, // global_mesg_num - 4, // num_fields - { // field_def_num, size, base_type - FIT_EXERCISE_TITLE_FIELD_NUM_WKT_STEP_NAME, (sizeof(FIT_STRING)*200), FIT_BASE_TYPE_STRING, - FIT_EXERCISE_TITLE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_CATEGORY, (sizeof(FIT_EXERCISE_CATEGORY)*1), FIT_BASE_TYPE_UINT16, - FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_NAME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - } -}; - -static const FIT_SCHEDULE_MESG_DEF schedule_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_SCHEDULE, // global_mesg_num - 7, // num_fields - { // field_def_num, size, base_type - FIT_SCHEDULE_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z, - FIT_SCHEDULE_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_SCHEDULE_FIELD_NUM_SCHEDULED_TIME, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_SCHEDULE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, - FIT_SCHEDULE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_SCHEDULE_FIELD_NUM_COMPLETED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - FIT_SCHEDULE_FIELD_NUM_TYPE, (sizeof(FIT_SCHEDULE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_TOTALS_MESG_DEF totals_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_TOTALS, // global_mesg_num - 9, // num_fields - { // field_def_num, size, base_type - FIT_TOTALS_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_TOTALS_FIELD_NUM_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_TOTALS_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_TOTALS_FIELD_NUM_CALORIES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_TOTALS_FIELD_NUM_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_TOTALS_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_TOTALS_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_TOTALS_FIELD_NUM_SESSIONS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_TOTALS_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_WEIGHT_SCALE_MESG_DEF weight_scale_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_WEIGHT_SCALE, // global_mesg_num - 13, // num_fields - { // field_def_num, size, base_type - FIT_WEIGHT_SCALE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_WEIGHT_SCALE_FIELD_NUM_WEIGHT, (sizeof(FIT_WEIGHT)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_FAT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_HYDRATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_BONE_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_MUSCLE_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_BASAL_MET, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_ACTIVE_MET, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_USER_PROFILE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_WEIGHT_SCALE_FIELD_NUM_PHYSIQUE_RATING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_WEIGHT_SCALE_FIELD_NUM_METABOLIC_AGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_RATING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_BLOOD_PRESSURE_MESG_DEF blood_pressure_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_BLOOD_PRESSURE, // global_mesg_num - 11, // num_fields - { // field_def_num, size, base_type - FIT_BLOOD_PRESSURE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_BLOOD_PRESSURE_FIELD_NUM_SYSTOLIC_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BLOOD_PRESSURE_FIELD_NUM_DIASTOLIC_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BLOOD_PRESSURE_FIELD_NUM_MEAN_ARTERIAL_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_3_SAMPLE_MEAN, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_MORNING_VALUES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_EVENING_VALUES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_BLOOD_PRESSURE_FIELD_NUM_USER_PROFILE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, - FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE_TYPE, (sizeof(FIT_HR_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_BLOOD_PRESSURE_FIELD_NUM_STATUS, (sizeof(FIT_BP_STATUS)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_MONITORING_INFO_MESG_DEF monitoring_info_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_MONITORING_INFO, // global_mesg_num - 2, // num_fields - { // field_def_num, size, base_type - FIT_MONITORING_INFO_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_MONITORING_INFO_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - } -}; - -static const FIT_MONITORING_MESG_DEF monitoring_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_MONITORING, // global_mesg_num - 12, // num_fields - { // field_def_num, size, base_type - FIT_MONITORING_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_MONITORING_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_MONITORING_FIELD_NUM_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_MONITORING_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_MONITORING_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_MONITORING_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_MONITORING_FIELD_NUM_DISTANCE_16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_MONITORING_FIELD_NUM_CYCLES_16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_MONITORING_FIELD_NUM_ACTIVE_TIME_16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_MONITORING_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8, - FIT_MONITORING_FIELD_NUM_ACTIVITY_TYPE, (sizeof(FIT_ACTIVITY_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_MONITORING_FIELD_NUM_ACTIVITY_SUBTYPE, (sizeof(FIT_ACTIVITY_SUBTYPE)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_HR_MESG_DEF hr_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_HR, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_HR_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_HR_FIELD_NUM_EVENT_TIMESTAMP, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_HR_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_HR_FIELD_NUM_TIME256, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_HR_FIELD_NUM_FILTERED_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_HR_FIELD_NUM_EVENT_TIMESTAMP_12, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, - } -}; - -static const FIT_ANT_RX_MESG_DEF ant_rx_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_ANT_RX, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_ANT_RX_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_ANT_RX_FIELD_NUM_DATA, (sizeof(FIT_BYTE)*8), FIT_BASE_TYPE_BYTE, - FIT_ANT_RX_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_ANT_RX_FIELD_NUM_MESG_ID, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, - FIT_ANT_RX_FIELD_NUM_MESG_DATA, (sizeof(FIT_BYTE)*9), FIT_BASE_TYPE_BYTE, - FIT_ANT_RX_FIELD_NUM_CHANNEL_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_ANT_TX_MESG_DEF ant_tx_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_ANT_TX, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_ANT_TX_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, - FIT_ANT_TX_FIELD_NUM_DATA, (sizeof(FIT_BYTE)*8), FIT_BASE_TYPE_BYTE, - FIT_ANT_TX_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, - FIT_ANT_TX_FIELD_NUM_MESG_ID, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, - FIT_ANT_TX_FIELD_NUM_MESG_DATA, (sizeof(FIT_BYTE)*9), FIT_BASE_TYPE_BYTE, - FIT_ANT_TX_FIELD_NUM_CHANNEL_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_EXD_SCREEN_CONFIGURATION_MESG_DEF exd_screen_configuration_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_EXD_SCREEN_CONFIGURATION, // global_mesg_num - 4, // num_fields - { // field_def_num, size, base_type - FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_FIELD_COUNT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_LAYOUT, (sizeof(FIT_EXD_LAYOUT)*1), FIT_BASE_TYPE_ENUM, - FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_DEF exd_data_field_configuration_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_EXD_DATA_FIELD_CONFIGURATION, // global_mesg_num - 6, // num_fields - { // field_def_num, size, base_type - FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, - FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_FIELD_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_COUNT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_DISPLAY_TYPE, (sizeof(FIT_EXD_DISPLAY_TYPE)*1), FIT_BASE_TYPE_ENUM, - FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_TITLE, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, - } -}; - -static const FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_DEF exd_data_concept_configuration_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_EXD_DATA_CONCEPT_CONFIGURATION, // global_mesg_num - 11, // num_fields - { // field_def_num, size, base_type - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_FIELD_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_PAGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_KEY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCALING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_UNITS, (sizeof(FIT_EXD_DATA_UNITS)*1), FIT_BASE_TYPE_ENUM, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_QUALIFIER, (sizeof(FIT_EXD_QUALIFIERS)*1), FIT_BASE_TYPE_ENUM, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DESCRIPTOR, (sizeof(FIT_EXD_DESCRIPTORS)*1), FIT_BASE_TYPE_ENUM, - FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_IS_SIGNED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, - } -}; - -static const FIT_FIELD_DESCRIPTION_MESG_DEF field_description_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_FIELD_DESCRIPTION, // global_mesg_num - 10, // num_fields - { // field_def_num, size, base_type - FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_NAME, (sizeof(FIT_STRING)*64), FIT_BASE_TYPE_STRING, - FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, - FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_UNIT_ID, (sizeof(FIT_FIT_BASE_UNIT)*1), FIT_BASE_TYPE_UINT16, - FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16, - FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID, (sizeof(FIT_FIT_BASE_TYPE)*1), FIT_BASE_TYPE_UINT8, - FIT_FIELD_DESCRIPTION_FIELD_NUM_SCALE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - FIT_FIELD_DESCRIPTION_FIELD_NUM_OFFSET, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, - FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_FIELD_NUM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - -static const FIT_DEVELOPER_DATA_ID_MESG_DEF developer_data_id_mesg_def = -{ - 0, // reserved_1 - FIT_ARCH_ENDIAN, // arch - FIT_MESG_NUM_DEVELOPER_DATA_ID, // global_mesg_num - 5, // num_fields - { // field_def_num, size, base_type - FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_ID, (sizeof(FIT_BYTE)*16), FIT_BASE_TYPE_BYTE, - FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_ID, (sizeof(FIT_BYTE)*16), FIT_BASE_TYPE_BYTE, - FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_VERSION, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, - FIT_DEVELOPER_DATA_ID_FIELD_NUM_MANUFACTURER_ID, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, - FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_DATA_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, - } -}; - - -const FIT_CONST_MESG_DEF_PTR fit_mesg_defs[] = -{ - (FIT_CONST_MESG_DEF_PTR) &pad_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &file_id_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &file_creator_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &software_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &slave_device_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &capabilities_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &file_capabilities_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &mesg_capabilities_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &field_capabilities_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &device_settings_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &user_profile_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &hrm_profile_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &sdm_profile_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &bike_profile_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &connectivity_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &zones_target_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &sport_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &hr_zone_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &speed_zone_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &cadence_zone_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &power_zone_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &met_zone_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &dive_settings_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &goal_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &activity_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &session_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &lap_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &length_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &record_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &event_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &device_info_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &training_file_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &hrv_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &weather_conditions_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &weather_alert_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &nmea_sentence_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &aviation_attitude_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &video_title_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &video_description_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &set_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &course_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &course_point_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &segment_id_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &segment_leaderboard_entry_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &segment_point_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &segment_lap_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &segment_file_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &workout_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &workout_session_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &workout_step_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &exercise_title_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &schedule_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &totals_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &weight_scale_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &blood_pressure_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &monitoring_info_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &monitoring_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &hr_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &ant_rx_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &ant_tx_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &exd_screen_configuration_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &exd_data_field_configuration_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &exd_data_concept_configuration_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &field_description_mesg_def, - (FIT_CONST_MESG_DEF_PTR) &developer_data_id_mesg_def, -}; - -/////////////////////////////////////////////////////////////////////// -// Files -/////////////////////////////////////////////////////////////////////// - -static const FIT_FILE_MESG device_file_mesgs[] = -{ - { FIT_STRUCT_OFFSET(file_id_mesg_def, FIT_DEVICE_FILE), FIT_STRUCT_OFFSET(file_id_mesg, FIT_DEVICE_FILE) + FIT_HDR_SIZE, FIT_MESG_NUM_FILE_ID, FIT_DEVICE_FILE_FILE_ID_MESGS, FIT_MESG_FILE_ID}, -}; - -const FIT_FILE_DEF fit_file_defs[] = -{ - { FIT_DEVICE_FILE_DATA_SIZE, (FIT_FILE_MESG *) &device_file_mesgs, FIT_DEVICE_FILE_MESG_COUNT, FIT_FILE_DEVICE, FIT_DEVICE_FILE_COUNT}, -}; +//////////////////////////////////////////////////////////////////////////////// +// The following FIT Protocol software provided may be used with FIT protocol +// devices only and remains the copyrighted property of Garmin Canada Inc. +// The software is being provided on an "as-is" basis and as an accommodation, +// and therefore all warranties, representations, or guarantees of any kind +// (whether express, implied or statutory) including, without limitation, +// warranties of merchantability, non-infringement, or fitness for a particular +// purpose, are specifically disclaimed. +// +// Copyright 2020 Garmin Canada Inc. +//////////////////////////////////////////////////////////////////////////////// +// ****WARNING**** This file is auto-generated! Do NOT edit this file. +// Profile Version = 21.40Release +// Tag = production/akw/21.40.00-0-g813c158 +// Product = EXAMPLE +// Alignment = 4 bytes, padding disabled. +//////////////////////////////////////////////////////////////////////////////// + + +#include "string.h" +#include "fit_product.h" +#include "fit_include.h" + + +/////////////////////////////////////////////////////////////////////// +// Messages +/////////////////////////////////////////////////////////////////////// + +static const FIT_PAD_MESG_DEF pad_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_PAD, // global_mesg_num + 0 // num_fields +}; + + +static const FIT_FILE_ID_MESG_DEF file_id_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_FILE_ID, // global_mesg_num + 7, // num_fields + { // field_def_num, size, base_type + FIT_FILE_ID_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z, + FIT_FILE_ID_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_FILE_ID_FIELD_NUM_PRODUCT_NAME, (sizeof(FIT_STRING)*20), FIT_BASE_TYPE_STRING, + FIT_FILE_ID_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, + FIT_FILE_ID_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_FILE_ID_FIELD_NUM_NUMBER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_FILE_ID_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_FILE_CREATOR_MESG_DEF file_creator_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_FILE_CREATOR, // global_mesg_num + 2, // num_fields + { // field_def_num, size, base_type + FIT_FILE_CREATOR_FIELD_NUM_SOFTWARE_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_FILE_CREATOR_FIELD_NUM_HARDWARE_VERSION, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_SOFTWARE_MESG_DEF software_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SOFTWARE, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_SOFTWARE_FIELD_NUM_PART_NUMBER, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_SOFTWARE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SOFTWARE_FIELD_NUM_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_SLAVE_DEVICE_MESG_DEF slave_device_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SLAVE_DEVICE, // global_mesg_num + 2, // num_fields + { // field_def_num, size, base_type + FIT_SLAVE_DEVICE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, + FIT_SLAVE_DEVICE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_CAPABILITIES_MESG_DEF capabilities_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_CAPABILITIES, // global_mesg_num + 4, // num_fields + { // field_def_num, size, base_type + FIT_CAPABILITIES_FIELD_NUM_LANGUAGES, (sizeof(FIT_UINT8Z)*4), FIT_BASE_TYPE_UINT8Z, + FIT_CAPABILITIES_FIELD_NUM_WORKOUTS_SUPPORTED, (sizeof(FIT_WORKOUT_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z, + FIT_CAPABILITIES_FIELD_NUM_CONNECTIVITY_SUPPORTED, (sizeof(FIT_CONNECTIVITY_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z, + FIT_CAPABILITIES_FIELD_NUM_SPORTS, (sizeof(FIT_SPORT_BITS_0)*1), FIT_BASE_TYPE_UINT8Z, + } +}; + +static const FIT_FILE_CAPABILITIES_MESG_DEF file_capabilities_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_FILE_CAPABILITIES, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_FILE_CAPABILITIES_FIELD_NUM_DIRECTORY, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_SIZE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_FILE_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_FILE_CAPABILITIES_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, + FIT_FILE_CAPABILITIES_FIELD_NUM_FLAGS, (sizeof(FIT_FILE_FLAGS)*1), FIT_BASE_TYPE_UINT8Z, + } +}; + +static const FIT_MESG_CAPABILITIES_MESG_DEF mesg_capabilities_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_MESG_CAPABILITIES, // global_mesg_num + 5, // num_fields + { // field_def_num, size, base_type + FIT_MESG_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_MESG_CAPABILITIES_FIELD_NUM_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16, + FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_MESG_CAPABILITIES_FIELD_NUM_FILE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, + FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT_TYPE, (sizeof(FIT_MESG_COUNT)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_FIELD_CAPABILITIES_MESG_DEF field_capabilities_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_FIELD_CAPABILITIES, // global_mesg_num + 5, // num_fields + { // field_def_num, size, base_type + FIT_FIELD_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_FIELD_CAPABILITIES_FIELD_NUM_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16, + FIT_FIELD_CAPABILITIES_FIELD_NUM_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_FIELD_CAPABILITIES_FIELD_NUM_FILE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, + FIT_FIELD_CAPABILITIES_FIELD_NUM_FIELD_NUM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_DEVICE_SETTINGS_MESG_DEF device_settings_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_DEVICE_SETTINGS, // global_mesg_num + 17, // num_fields + { // field_def_num, size, base_type + FIT_DEVICE_SETTINGS_FIELD_NUM_UTC_OFFSET, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_OFFSET, (sizeof(FIT_UINT32)*2), FIT_BASE_TYPE_UINT32, + FIT_DEVICE_SETTINGS_FIELD_NUM_CLOCK_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_DEVICE_SETTINGS_FIELD_NUM_PAGES_ENABLED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVICE_SETTINGS_FIELD_NUM_DEFAULT_PAGE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_STEPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVE_TIME_ZONE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_MODE, (sizeof(FIT_TIME_MODE)*2), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_ZONE_OFFSET, (sizeof(FIT_SINT8)*2), FIT_BASE_TYPE_SINT8, + FIT_DEVICE_SETTINGS_FIELD_NUM_BACKLIGHT_MODE, (sizeof(FIT_BACKLIGHT_MODE)*1), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVITY_TRACKER_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_SETTINGS_FIELD_NUM_MOVE_ALERT_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_SETTINGS_FIELD_NUM_DATE_MODE, (sizeof(FIT_DATE_MODE)*1), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_SETTINGS_FIELD_NUM_DISPLAY_ORIENTATION, (sizeof(FIT_DISPLAY_ORIENTATION)*1), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_SETTINGS_FIELD_NUM_MOUNTING_SIDE, (sizeof(FIT_SIDE)*1), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_SETTINGS_FIELD_NUM_TAP_SENSITIVITY, (sizeof(FIT_TAP_SENSITIVITY)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_USER_PROFILE_MESG_DEF user_profile_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_USER_PROFILE, // global_mesg_num + 25, // num_fields + { // field_def_num, size, base_type + FIT_USER_PROFILE_FIELD_NUM_FRIENDLY_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_USER_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_USER_PROFILE_FIELD_NUM_WEIGHT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_USER_PROFILE_FIELD_NUM_LOCAL_ID, (sizeof(FIT_USER_LOCAL_ID)*1), FIT_BASE_TYPE_UINT16, + FIT_USER_PROFILE_FIELD_NUM_USER_RUNNING_STEP_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_USER_PROFILE_FIELD_NUM_USER_WALKING_STEP_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_USER_PROFILE_FIELD_NUM_GENDER, (sizeof(FIT_GENDER)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_AGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_USER_PROFILE_FIELD_NUM_HEIGHT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_USER_PROFILE_FIELD_NUM_LANGUAGE, (sizeof(FIT_LANGUAGE)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_ELEV_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_WEIGHT_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_RESTING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_RUNNING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_BIKING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_USER_PROFILE_FIELD_NUM_HR_SETTING, (sizeof(FIT_DISPLAY_HEART)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_SPEED_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_DIST_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_POWER_SETTING, (sizeof(FIT_DISPLAY_POWER)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_ACTIVITY_CLASS, (sizeof(FIT_ACTIVITY_CLASS)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_POSITION_SETTING, (sizeof(FIT_DISPLAY_POSITION)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_TEMPERATURE_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + FIT_USER_PROFILE_FIELD_NUM_GLOBAL_ID, (sizeof(FIT_BYTE)*6), FIT_BASE_TYPE_BYTE, + FIT_USER_PROFILE_FIELD_NUM_HEIGHT_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_HRM_PROFILE_MESG_DEF hrm_profile_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_HRM_PROFILE, // global_mesg_num + 5, // num_fields + { // field_def_num, size, base_type + FIT_HRM_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, + FIT_HRM_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_HRM_PROFILE_FIELD_NUM_LOG_HRV, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + } +}; + +static const FIT_SDM_PROFILE_MESG_DEF sdm_profile_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SDM_PROFILE, // global_mesg_num + 8, // num_fields + { // field_def_num, size, base_type + FIT_SDM_PROFILE_FIELD_NUM_ODOMETER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SDM_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, + FIT_SDM_PROFILE_FIELD_NUM_SDM_CAL_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SDM_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_SDM_PROFILE_FIELD_NUM_SPEED_SOURCE, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_SDM_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_BIKE_PROFILE_MESG_DEF bike_profile_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_BIKE_PROFILE, // global_mesg_num + 32, // num_fields + { // field_def_num, size, base_type + FIT_BIKE_PROFILE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_BIKE_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, + FIT_BIKE_PROFILE_FIELD_NUM_CUSTOM_WHEELSIZE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEELSIZE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_WEIGHT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BIKE_PROFILE_FIELD_NUM_POWER_CAL_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BIKE_PROFILE_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEEL_CAL, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_AUTO_POWER_ZERO, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_BIKE_PROFILE_FIELD_NUM_SPD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_CAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_SPDCAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_POWER_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_CRANK_LENGTH, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_BIKE_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_BIKE_PROFILE_FIELD_NUM_SHIMANO_DI2_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_CONNECTIVITY_MESG_DEF connectivity_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_CONNECTIVITY, // global_mesg_num + 13, // num_fields + { // field_def_num, size, base_type + FIT_CONNECTIVITY_FIELD_NUM_NAME, (sizeof(FIT_STRING)*24), FIT_BASE_TYPE_STRING, + FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_LE_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_ANT_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_LIVE_TRACKING_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_WEATHER_CONDITIONS_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_WEATHER_ALERTS_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_AUTO_ACTIVITY_UPLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_COURSE_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_WORKOUT_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_GPS_EPHEMERIS_DOWNLOAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_INCIDENT_DETECTION_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_CONNECTIVITY_FIELD_NUM_GROUPTRACK_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_ZONES_TARGET_MESG_DEF zones_target_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_ZONES_TARGET, // global_mesg_num + 5, // num_fields + { // field_def_num, size, base_type + FIT_ZONES_TARGET_FIELD_NUM_FUNCTIONAL_THRESHOLD_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_ZONES_TARGET_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_ZONES_TARGET_FIELD_NUM_THRESHOLD_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_ZONES_TARGET_FIELD_NUM_HR_CALC_TYPE, (sizeof(FIT_HR_ZONE_CALC)*1), FIT_BASE_TYPE_ENUM, + FIT_ZONES_TARGET_FIELD_NUM_PWR_CALC_TYPE, (sizeof(FIT_PWR_ZONE_CALC)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_SPORT_MESG_DEF sport_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SPORT, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_SPORT_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_SPORT_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_SPORT_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_HR_ZONE_MESG_DEF hr_zone_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_HR_ZONE, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_HR_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_HR_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_HR_ZONE_FIELD_NUM_HIGH_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_SPEED_ZONE_MESG_DEF speed_zone_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SPEED_ZONE, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_SPEED_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_SPEED_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SPEED_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_CADENCE_ZONE_MESG_DEF cadence_zone_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_CADENCE_ZONE, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_CADENCE_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_CADENCE_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_CADENCE_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_POWER_ZONE_MESG_DEF power_zone_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_POWER_ZONE, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_POWER_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_POWER_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_POWER_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_MET_ZONE_MESG_DEF met_zone_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_MET_ZONE, // global_mesg_num + 4, // num_fields + { // field_def_num, size, base_type + FIT_MET_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_MET_ZONE_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_MET_ZONE_FIELD_NUM_HIGH_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_MET_ZONE_FIELD_NUM_FAT_CALORIES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_DIVE_SETTINGS_MESG_DEF dive_settings_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_DIVE_SETTINGS, // global_mesg_num + 2, // num_fields + { // field_def_num, size, base_type + FIT_DIVE_SETTINGS_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_DIVE_SETTINGS_FIELD_NUM_HEART_RATE_SOURCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_GOAL_MESG_DEF goal_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_GOAL, // global_mesg_num + 13, // num_fields + { // field_def_num, size, base_type + FIT_GOAL_FIELD_NUM_START_DATE, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_GOAL_FIELD_NUM_END_DATE, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_GOAL_FIELD_NUM_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_GOAL_FIELD_NUM_TARGET_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_GOAL_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_GOAL_FIELD_NUM_RECURRENCE_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_GOAL_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_GOAL_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_GOAL_FIELD_NUM_TYPE, (sizeof(FIT_GOAL)*1), FIT_BASE_TYPE_ENUM, + FIT_GOAL_FIELD_NUM_REPEAT, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_GOAL_FIELD_NUM_RECURRENCE, (sizeof(FIT_GOAL_RECURRENCE)*1), FIT_BASE_TYPE_ENUM, + FIT_GOAL_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_GOAL_FIELD_NUM_SOURCE, (sizeof(FIT_GOAL_SOURCE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_ACTIVITY_MESG_DEF activity_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_ACTIVITY, // global_mesg_num + 8, // num_fields + { // field_def_num, size, base_type + FIT_ACTIVITY_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_ACTIVITY_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_ACTIVITY_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_ACTIVITY_FIELD_NUM_NUM_SESSIONS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_ACTIVITY_FIELD_NUM_TYPE, (sizeof(FIT_ACTIVITY)*1), FIT_BASE_TYPE_ENUM, + FIT_ACTIVITY_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, + FIT_ACTIVITY_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_ACTIVITY_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_SESSION_MESG_DEF session_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SESSION, // global_mesg_num + 91, // num_fields + { // field_def_num, size, base_type + FIT_SESSION_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SESSION_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SESSION_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_NEC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SESSION_FIELD_NUM_NEC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SESSION_FIELD_NUM_SWC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SESSION_FIELD_NUM_SWC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SESSION_FIELD_NUM_AVG_STROKE_COUNT, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_AVG_LAP_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_ENHANCED_AVG_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_ENHANCED_MAX_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_ENHANCED_AVG_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_ENHANCED_MIN_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_ENHANCED_MAX_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SESSION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_FIRST_LAP_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_NUM_LAPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_NUM_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_TRAINING_STRESS_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_INTENSITY_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_STROKE_DISTANCE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_POOL_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_THRESHOLD_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_NUM_ACTIVE_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SESSION_FIELD_NUM_BEST_LAP_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_MAX_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_VERTICAL_OSCILLATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_AVG_VAM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SESSION_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, + FIT_SESSION_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_SESSION_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_SESSION_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_SESSION_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_TOTAL_TRAINING_EFFECT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_TRIGGER, (sizeof(FIT_SESSION_TRIGGER)*1), FIT_BASE_TYPE_ENUM, + FIT_SESSION_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM, + FIT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + FIT_SESSION_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_SESSION_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_SESSION_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_OPPONENT_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, + FIT_SESSION_FIELD_NUM_AVG_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_MAX_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_SPORT_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SESSION_FIELD_NUM_TOTAL_ANAEROBIC_TRAINING_EFFECT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_LAP_MESG_DEF lap_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_LAP, // global_mesg_num + 83, // num_fields + { // field_def_num, size, base_type + FIT_LAP_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_LAP_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_LAP_FIELD_NUM_END_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_LAP_FIELD_NUM_END_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_ENHANCED_AVG_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_ENHANCED_MAX_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_ENHANCED_AVG_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_ENHANCED_MIN_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_ENHANCED_MAX_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LAP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_NUM_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_FIRST_LENGTH_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_STROKE_DISTANCE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_NUM_ACTIVE_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_LAP_FIELD_NUM_REPETITION_NUM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_WKT_STEP_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_VERTICAL_OSCILLATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_STANCE_TIME_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_STANCE_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_TOTAL_HEMOGLOBIN_CONC, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_MIN_TOTAL_HEMOGLOBIN_CONC, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_MAX_TOTAL_HEMOGLOBIN_CONC, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_SATURATED_HEMOGLOBIN_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_MIN_SATURATED_HEMOGLOBIN_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_MAX_SATURATED_HEMOGLOBIN_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_AVG_VAM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LAP_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, + FIT_LAP_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_LAP_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_INTENSITY, (sizeof(FIT_INTENSITY)*1), FIT_BASE_TYPE_ENUM, + FIT_LAP_FIELD_NUM_LAP_TRIGGER, (sizeof(FIT_LAP_TRIGGER)*1), FIT_BASE_TYPE_ENUM, + FIT_LAP_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_LAP_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM, + FIT_LAP_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_LAP_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_LAP_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_LAP_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_LENGTH_MESG_DEF length_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_LENGTH, // global_mesg_num + 18, // num_fields + { // field_def_num, size, base_type + FIT_LENGTH_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_LENGTH_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_LENGTH_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LENGTH_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_LENGTH_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_LENGTH_FIELD_NUM_TOTAL_STROKES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LENGTH_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LENGTH_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LENGTH_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LENGTH_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LENGTH_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LENGTH_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_LENGTH_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, + FIT_LENGTH_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_LENGTH_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM, + FIT_LENGTH_FIELD_NUM_AVG_SWIMMING_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LENGTH_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_LENGTH_FIELD_NUM_LENGTH_TYPE, (sizeof(FIT_LENGTH_TYPE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_RECORD_MESG_DEF record_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_RECORD, // global_mesg_num + 48, // num_fields + { // field_def_num, size, base_type + FIT_RECORD_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_RECORD_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_RECORD_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_RECORD_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_RECORD_FIELD_NUM_TIME_FROM_COURSE, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_RECORD_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_RECORD_FIELD_NUM_ACCUMULATED_POWER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_RECORD_FIELD_NUM_ENHANCED_SPEED, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_RECORD_FIELD_NUM_ENHANCED_ALTITUDE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_RECORD_FIELD_NUM_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_RECORD_FIELD_NUM_COMPRESSED_ACCUMULATED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_RECORD_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_VERTICAL_OSCILLATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_STANCE_TIME_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_STANCE_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_CADENCE256, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MIN, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MAX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MIN, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MAX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_RECORD_FIELD_NUM_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_COMPRESSED_SPEED_DISTANCE, (sizeof(FIT_BYTE)*3), FIT_BASE_TYPE_BYTE, + FIT_RECORD_FIELD_NUM_RESISTANCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_CYCLE_LENGTH, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_RECORD_FIELD_NUM_SPEED_1S, (sizeof(FIT_UINT8)*5), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_ACTIVITY_TYPE, (sizeof(FIT_ACTIVITY_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_RECORD_FIELD_NUM_LEFT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_RIGHT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_LEFT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_RIGHT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_COMBINED_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_TIME128, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_STROKE_TYPE, (sizeof(FIT_STROKE_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_RECORD_FIELD_NUM_ZONE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_RECORD_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_EVENT_MESG_DEF event_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_EVENT, // global_mesg_num + 14, // num_fields + { // field_def_num, size, base_type + FIT_EVENT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_EVENT_FIELD_NUM_DATA, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_EVENT_FIELD_NUM_DATA16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_EVENT_FIELD_NUM_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_EVENT_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_EVENT_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, + FIT_EVENT_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_EVENT_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EVENT_FIELD_NUM_FRONT_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_EVENT_FIELD_NUM_FRONT_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_EVENT_FIELD_NUM_REAR_GEAR_NUM, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_EVENT_FIELD_NUM_REAR_GEAR, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_EVENT_FIELD_NUM_RADAR_THREAT_LEVEL_MAX, (sizeof(FIT_RADAR_THREAT_LEVEL_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_EVENT_FIELD_NUM_RADAR_THREAT_COUNT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_DEVICE_INFO_MESG_DEF device_info_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_DEVICE_INFO, // global_mesg_num + 18, // num_fields + { // field_def_num, size, base_type + FIT_DEVICE_INFO_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_DEVICE_INFO_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z, + FIT_DEVICE_INFO_FIELD_NUM_CUM_OPERATING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_DEVICE_INFO_FIELD_NUM_PRODUCT_NAME, (sizeof(FIT_STRING)*20), FIT_BASE_TYPE_STRING, + FIT_DEVICE_INFO_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVICE_INFO_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVICE_INFO_FIELD_NUM_SOFTWARE_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVICE_INFO_FIELD_NUM_BATTERY_VOLTAGE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVICE_INFO_FIELD_NUM_ANT_DEVICE_NUMBER, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z, + FIT_DEVICE_INFO_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8, + FIT_DEVICE_INFO_FIELD_NUM_DEVICE_TYPE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_DEVICE_INFO_FIELD_NUM_HARDWARE_VERSION, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_DEVICE_INFO_FIELD_NUM_BATTERY_STATUS, (sizeof(FIT_BATTERY_STATUS)*1), FIT_BASE_TYPE_UINT8, + FIT_DEVICE_INFO_FIELD_NUM_SENSOR_POSITION, (sizeof(FIT_BODY_LOCATION)*1), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_INFO_FIELD_NUM_DESCRIPTOR, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, + FIT_DEVICE_INFO_FIELD_NUM_ANT_TRANSMISSION_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z, + FIT_DEVICE_INFO_FIELD_NUM_ANT_NETWORK, (sizeof(FIT_ANT_NETWORK)*1), FIT_BASE_TYPE_ENUM, + FIT_DEVICE_INFO_FIELD_NUM_SOURCE_TYPE, (sizeof(FIT_SOURCE_TYPE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_TRAINING_FILE_MESG_DEF training_file_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_TRAINING_FILE, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_TRAINING_FILE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_TRAINING_FILE_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z, + FIT_TRAINING_FILE_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_TRAINING_FILE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, + FIT_TRAINING_FILE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_TRAINING_FILE_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_HRV_MESG_DEF hrv_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_HRV, // global_mesg_num + 1, // num_fields + { // field_def_num, size, base_type + FIT_HRV_FIELD_NUM_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_WEATHER_CONDITIONS_MESG_DEF weather_conditions_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_WEATHER_CONDITIONS, // global_mesg_num + 16, // num_fields + { // field_def_num, size, base_type + FIT_WEATHER_CONDITIONS_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_WEATHER_CONDITIONS_FIELD_NUM_LOCATION, (sizeof(FIT_STRING)*64), FIT_BASE_TYPE_STRING, + FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_AT_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_DIRECTION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEATHER_CONDITIONS_FIELD_NUM_WEATHER_REPORT, (sizeof(FIT_WEATHER_REPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_WEATHER_CONDITIONS_FIELD_NUM_CONDITION, (sizeof(FIT_WEATHER_STATUS)*1), FIT_BASE_TYPE_ENUM, + FIT_WEATHER_CONDITIONS_FIELD_NUM_PRECIPITATION_PROBABILITY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE_FEELS_LIKE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_WEATHER_CONDITIONS_FIELD_NUM_RELATIVE_HUMIDITY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_WEATHER_CONDITIONS_FIELD_NUM_DAY_OF_WEEK, (sizeof(FIT_DAY_OF_WEEK)*1), FIT_BASE_TYPE_ENUM, + FIT_WEATHER_CONDITIONS_FIELD_NUM_HIGH_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_WEATHER_CONDITIONS_FIELD_NUM_LOW_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + } +}; + +static const FIT_WEATHER_ALERT_MESG_DEF weather_alert_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_WEATHER_ALERT, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_WEATHER_ALERT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_WEATHER_ALERT_FIELD_NUM_REPORT_ID, (sizeof(FIT_STRING)*12), FIT_BASE_TYPE_STRING, + FIT_WEATHER_ALERT_FIELD_NUM_ISSUE_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_WEATHER_ALERT_FIELD_NUM_EXPIRE_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_WEATHER_ALERT_FIELD_NUM_SEVERITY, (sizeof(FIT_WEATHER_SEVERITY)*1), FIT_BASE_TYPE_ENUM, + FIT_WEATHER_ALERT_FIELD_NUM_TYPE, (sizeof(FIT_WEATHER_SEVERE_TYPE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_NMEA_SENTENCE_MESG_DEF nmea_sentence_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_NMEA_SENTENCE, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP_MS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_NMEA_SENTENCE_FIELD_NUM_SENTENCE, (sizeof(FIT_STRING)*83), FIT_BASE_TYPE_STRING, + } +}; + +static const FIT_AVIATION_ATTITUDE_MESG_DEF aviation_attitude_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_AVIATION_ATTITUDE, // global_mesg_num + 12, // num_fields + { // field_def_num, size, base_type + FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_AVIATION_ATTITUDE_FIELD_NUM_SYSTEM_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP_MS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_AVIATION_ATTITUDE_FIELD_NUM_PITCH, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_AVIATION_ATTITUDE_FIELD_NUM_ROLL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_LATERAL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_NORMAL, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_AVIATION_ATTITUDE_FIELD_NUM_TURN_RATE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_AVIATION_ATTITUDE_FIELD_NUM_TRACK, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_AVIATION_ATTITUDE_FIELD_NUM_VALIDITY, (sizeof(FIT_ATTITUDE_VALIDITY)*1), FIT_BASE_TYPE_UINT16, + FIT_AVIATION_ATTITUDE_FIELD_NUM_STAGE, (sizeof(FIT_ATTITUDE_STAGE)*1), FIT_BASE_TYPE_ENUM, + FIT_AVIATION_ATTITUDE_FIELD_NUM_ATTITUDE_STAGE_COMPLETE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_VIDEO_TITLE_MESG_DEF video_title_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_VIDEO_TITLE, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_VIDEO_TITLE_FIELD_NUM_TEXT, (sizeof(FIT_STRING)*80), FIT_BASE_TYPE_STRING, + FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_VIDEO_DESCRIPTION_MESG_DEF video_description_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_VIDEO_DESCRIPTION, // global_mesg_num + 3, // num_fields + { // field_def_num, size, base_type + FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_VIDEO_DESCRIPTION_FIELD_NUM_TEXT, (sizeof(FIT_STRING)*250), FIT_BASE_TYPE_STRING, + } +}; + +static const FIT_SET_MESG_DEF set_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SET, // global_mesg_num + 1, // num_fields + { // field_def_num, size, base_type + FIT_SET_FIELD_NUM_WEIGHT_DISPLAY_UNIT, (sizeof(FIT_FIT_BASE_UNIT)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_COURSE_MESG_DEF course_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_COURSE, // global_mesg_num + 4, // num_fields + { // field_def_num, size, base_type + FIT_COURSE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_COURSE_FIELD_NUM_CAPABILITIES, (sizeof(FIT_COURSE_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z, + FIT_COURSE_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_COURSE_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_COURSE_POINT_MESG_DEF course_point_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_COURSE_POINT, // global_mesg_num + 8, // num_fields + { // field_def_num, size, base_type + FIT_COURSE_POINT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_COURSE_POINT_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_COURSE_POINT_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_COURSE_POINT_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_COURSE_POINT_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_COURSE_POINT_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_COURSE_POINT_FIELD_NUM_TYPE, (sizeof(FIT_COURSE_POINT)*1), FIT_BASE_TYPE_ENUM, + FIT_COURSE_POINT_FIELD_NUM_FAVORITE, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_SEGMENT_ID_MESG_DEF segment_id_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SEGMENT_ID, // global_mesg_num + 9, // num_fields + { // field_def_num, size, base_type + FIT_SEGMENT_ID_FIELD_NUM_USER_PROFILE_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_ID_FIELD_NUM_DEVICE_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_ID_FIELD_NUM_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, + FIT_SEGMENT_ID_FIELD_NUM_UUID, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, + FIT_SEGMENT_ID_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_ID_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_ID_FIELD_NUM_DEFAULT_RACE_LEADER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_ID_FIELD_NUM_DELETE_STATUS, (sizeof(FIT_SEGMENT_DELETE_STATUS)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_ID_FIELD_NUM_SELECTION_TYPE, (sizeof(FIT_SEGMENT_SELECTION_TYPE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_SEGMENT_LEADERBOARD_ENTRY_MESG_DEF segment_leaderboard_entry_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SEGMENT_LEADERBOARD_ENTRY, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_GROUP_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_ACTIVITY_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_SEGMENT_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, + FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_TYPE, (sizeof(FIT_SEGMENT_LEADERBOARD_TYPE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_SEGMENT_POINT_MESG_DEF segment_point_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SEGMENT_POINT, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_POINT_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_POINT_FIELD_NUM_LEADER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_POINT_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_POINT_FIELD_NUM_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_SEGMENT_LAP_MESG_DEF segment_lap_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SEGMENT_LAP, // global_mesg_num + 73, // num_fields + { // field_def_num, size, base_type + FIT_SEGMENT_LAP_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_NEC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_LAP_FIELD_NUM_NEC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_LAP_FIELD_NUM_SWC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_LAP_FIELD_NUM_SWC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32, + FIT_SEGMENT_LAP_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_LAP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16, + FIT_SEGMENT_LAP_FIELD_NUM_REPETITION_NUM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_WKT_STEP_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_FRONT_GEAR_SHIFT_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_REAR_GEAR_SHIFT_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_LAP_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_LAP_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_LAP_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_LAP_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_SEGMENT_LAP_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_SPORT_EVENT, (sizeof(FIT_SPORT_EVENT)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_COMBINED_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_STATUS, (sizeof(FIT_SEGMENT_LAP_STATUS)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_LAP_FIELD_NUM_UUID, (sizeof(FIT_STRING)*33), FIT_BASE_TYPE_STRING, + FIT_SEGMENT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_SEGMENT_FILE_MESG_DEF segment_file_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SEGMENT_FILE, // global_mesg_num + 7, // num_fields + { // field_def_num, size, base_type + FIT_SEGMENT_FILE_FIELD_NUM_USER_PROFILE_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_FILE_FIELD_NUM_LEADER_GROUP_PRIMARY_KEY, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_FILE_FIELD_NUM_LEADER_ACTIVITY_ID, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_SEGMENT_FILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_SEGMENT_FILE_FIELD_NUM_FILE_UUID, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, + FIT_SEGMENT_FILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_SEGMENT_FILE_FIELD_NUM_LEADER_TYPE, (sizeof(FIT_SEGMENT_LEADERBOARD_TYPE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_WORKOUT_MESG_DEF workout_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_WORKOUT, // global_mesg_num + 7, // num_fields + { // field_def_num, size, base_type + FIT_WORKOUT_FIELD_NUM_CAPABILITIES, (sizeof(FIT_WORKOUT_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z, + FIT_WORKOUT_FIELD_NUM_WKT_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_WORKOUT_FIELD_NUM_NUM_VALID_STEPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WORKOUT_FIELD_NUM_POOL_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WORKOUT_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_WORKOUT_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_WORKOUT_FIELD_NUM_POOL_LENGTH_UNIT, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_WORKOUT_SESSION_MESG_DEF workout_session_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_WORKOUT_SESSION, // global_mesg_num + 7, // num_fields + { // field_def_num, size, base_type + FIT_WORKOUT_SESSION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_WORKOUT_SESSION_FIELD_NUM_NUM_VALID_STEPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WORKOUT_SESSION_FIELD_NUM_FIRST_STEP_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WORKOUT_SESSION_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_WORKOUT_SESSION_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM, + FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_WORKOUT_STEP_MESG_DEF workout_step_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_WORKOUT_STEP, // global_mesg_num + 12, // num_fields + { // field_def_num, size, base_type + FIT_WORKOUT_STEP_FIELD_NUM_WKT_STEP_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_WORKOUT_STEP_FIELD_NUM_DURATION_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_WORKOUT_STEP_FIELD_NUM_TARGET_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_LOW, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_HIGH, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_WORKOUT_STEP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_WORKOUT_STEP_FIELD_NUM_EXERCISE_CATEGORY, (sizeof(FIT_EXERCISE_CATEGORY)*1), FIT_BASE_TYPE_UINT16, + FIT_WORKOUT_STEP_FIELD_NUM_DURATION_TYPE, (sizeof(FIT_WKT_STEP_DURATION)*1), FIT_BASE_TYPE_ENUM, + FIT_WORKOUT_STEP_FIELD_NUM_TARGET_TYPE, (sizeof(FIT_WKT_STEP_TARGET)*1), FIT_BASE_TYPE_ENUM, + FIT_WORKOUT_STEP_FIELD_NUM_INTENSITY, (sizeof(FIT_INTENSITY)*1), FIT_BASE_TYPE_ENUM, + FIT_WORKOUT_STEP_FIELD_NUM_NOTES, (sizeof(FIT_STRING)*50), FIT_BASE_TYPE_STRING, + FIT_WORKOUT_STEP_FIELD_NUM_EQUIPMENT, (sizeof(FIT_WORKOUT_EQUIPMENT)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_EXERCISE_TITLE_MESG_DEF exercise_title_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_EXERCISE_TITLE, // global_mesg_num + 4, // num_fields + { // field_def_num, size, base_type + FIT_EXERCISE_TITLE_FIELD_NUM_WKT_STEP_NAME, (sizeof(FIT_STRING)*200), FIT_BASE_TYPE_STRING, + FIT_EXERCISE_TITLE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_CATEGORY, (sizeof(FIT_EXERCISE_CATEGORY)*1), FIT_BASE_TYPE_UINT16, + FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_NAME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + } +}; + +static const FIT_SCHEDULE_MESG_DEF schedule_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_SCHEDULE, // global_mesg_num + 7, // num_fields + { // field_def_num, size, base_type + FIT_SCHEDULE_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z, + FIT_SCHEDULE_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_SCHEDULE_FIELD_NUM_SCHEDULED_TIME, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_SCHEDULE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, + FIT_SCHEDULE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_SCHEDULE_FIELD_NUM_COMPLETED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + FIT_SCHEDULE_FIELD_NUM_TYPE, (sizeof(FIT_SCHEDULE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_TOTALS_MESG_DEF totals_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_TOTALS, // global_mesg_num + 9, // num_fields + { // field_def_num, size, base_type + FIT_TOTALS_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_TOTALS_FIELD_NUM_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_TOTALS_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_TOTALS_FIELD_NUM_CALORIES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_TOTALS_FIELD_NUM_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_TOTALS_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_TOTALS_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_TOTALS_FIELD_NUM_SESSIONS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_TOTALS_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_WEIGHT_SCALE_MESG_DEF weight_scale_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_WEIGHT_SCALE, // global_mesg_num + 13, // num_fields + { // field_def_num, size, base_type + FIT_WEIGHT_SCALE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_WEIGHT_SCALE_FIELD_NUM_WEIGHT, (sizeof(FIT_WEIGHT)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_FAT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_HYDRATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_BONE_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_MUSCLE_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_BASAL_MET, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_ACTIVE_MET, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_USER_PROFILE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_WEIGHT_SCALE_FIELD_NUM_PHYSIQUE_RATING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_WEIGHT_SCALE_FIELD_NUM_METABOLIC_AGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_RATING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_BLOOD_PRESSURE_MESG_DEF blood_pressure_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_BLOOD_PRESSURE, // global_mesg_num + 11, // num_fields + { // field_def_num, size, base_type + FIT_BLOOD_PRESSURE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_BLOOD_PRESSURE_FIELD_NUM_SYSTOLIC_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BLOOD_PRESSURE_FIELD_NUM_DIASTOLIC_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BLOOD_PRESSURE_FIELD_NUM_MEAN_ARTERIAL_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_3_SAMPLE_MEAN, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_MORNING_VALUES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_EVENING_VALUES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_BLOOD_PRESSURE_FIELD_NUM_USER_PROFILE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16, + FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE_TYPE, (sizeof(FIT_HR_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_BLOOD_PRESSURE_FIELD_NUM_STATUS, (sizeof(FIT_BP_STATUS)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_MONITORING_INFO_MESG_DEF monitoring_info_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_MONITORING_INFO, // global_mesg_num + 2, // num_fields + { // field_def_num, size, base_type + FIT_MONITORING_INFO_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_MONITORING_INFO_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + } +}; + +static const FIT_MONITORING_MESG_DEF monitoring_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_MONITORING, // global_mesg_num + 12, // num_fields + { // field_def_num, size, base_type + FIT_MONITORING_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_MONITORING_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_MONITORING_FIELD_NUM_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_MONITORING_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_MONITORING_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_MONITORING_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_MONITORING_FIELD_NUM_DISTANCE_16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_MONITORING_FIELD_NUM_CYCLES_16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_MONITORING_FIELD_NUM_ACTIVE_TIME_16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_MONITORING_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8, + FIT_MONITORING_FIELD_NUM_ACTIVITY_TYPE, (sizeof(FIT_ACTIVITY_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_MONITORING_FIELD_NUM_ACTIVITY_SUBTYPE, (sizeof(FIT_ACTIVITY_SUBTYPE)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_HR_MESG_DEF hr_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_HR, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_HR_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_HR_FIELD_NUM_EVENT_TIMESTAMP, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_HR_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_HR_FIELD_NUM_TIME256, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_HR_FIELD_NUM_FILTERED_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_HR_FIELD_NUM_EVENT_TIMESTAMP_12, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, + } +}; + +static const FIT_ANT_RX_MESG_DEF ant_rx_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_ANT_RX, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_ANT_RX_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_ANT_RX_FIELD_NUM_DATA, (sizeof(FIT_BYTE)*8), FIT_BASE_TYPE_BYTE, + FIT_ANT_RX_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_ANT_RX_FIELD_NUM_MESG_ID, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, + FIT_ANT_RX_FIELD_NUM_MESG_DATA, (sizeof(FIT_BYTE)*9), FIT_BASE_TYPE_BYTE, + FIT_ANT_RX_FIELD_NUM_CHANNEL_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_ANT_TX_MESG_DEF ant_tx_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_ANT_TX, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_ANT_TX_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32, + FIT_ANT_TX_FIELD_NUM_DATA, (sizeof(FIT_BYTE)*8), FIT_BASE_TYPE_BYTE, + FIT_ANT_TX_FIELD_NUM_FRACTIONAL_TIMESTAMP, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16, + FIT_ANT_TX_FIELD_NUM_MESG_ID, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, + FIT_ANT_TX_FIELD_NUM_MESG_DATA, (sizeof(FIT_BYTE)*9), FIT_BASE_TYPE_BYTE, + FIT_ANT_TX_FIELD_NUM_CHANNEL_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_EXD_SCREEN_CONFIGURATION_MESG_DEF exd_screen_configuration_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_EXD_SCREEN_CONFIGURATION, // global_mesg_num + 4, // num_fields + { // field_def_num, size, base_type + FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_FIELD_COUNT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_LAYOUT, (sizeof(FIT_EXD_LAYOUT)*1), FIT_BASE_TYPE_ENUM, + FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_EXD_DATA_FIELD_CONFIGURATION_MESG_DEF exd_data_field_configuration_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_EXD_DATA_FIELD_CONFIGURATION, // global_mesg_num + 6, // num_fields + { // field_def_num, size, base_type + FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, + FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_FIELD_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_COUNT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_DISPLAY_TYPE, (sizeof(FIT_EXD_DISPLAY_TYPE)*1), FIT_BASE_TYPE_ENUM, + FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_TITLE, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING, + } +}; + +static const FIT_EXD_DATA_CONCEPT_CONFIGURATION_MESG_DEF exd_data_concept_configuration_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_EXD_DATA_CONCEPT_CONFIGURATION, // global_mesg_num + 11, // num_fields + { // field_def_num, size, base_type + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCREEN_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD, (sizeof(FIT_BYTE)*1), FIT_BASE_TYPE_BYTE, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_FIELD_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_PAGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_KEY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCALING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_UNITS, (sizeof(FIT_EXD_DATA_UNITS)*1), FIT_BASE_TYPE_ENUM, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_QUALIFIER, (sizeof(FIT_EXD_QUALIFIERS)*1), FIT_BASE_TYPE_ENUM, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DESCRIPTOR, (sizeof(FIT_EXD_DESCRIPTORS)*1), FIT_BASE_TYPE_ENUM, + FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_IS_SIGNED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM, + } +}; + +static const FIT_FIELD_DESCRIPTION_MESG_DEF field_description_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_FIELD_DESCRIPTION, // global_mesg_num + 10, // num_fields + { // field_def_num, size, base_type + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_NAME, (sizeof(FIT_STRING)*64), FIT_BASE_TYPE_STRING, + FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_UNIT_ID, (sizeof(FIT_FIT_BASE_UNIT)*1), FIT_BASE_TYPE_UINT16, + FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16, + FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID, (sizeof(FIT_FIT_BASE_TYPE)*1), FIT_BASE_TYPE_UINT8, + FIT_FIELD_DESCRIPTION_FIELD_NUM_SCALE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + FIT_FIELD_DESCRIPTION_FIELD_NUM_OFFSET, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8, + FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_FIELD_NUM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + +static const FIT_DEVELOPER_DATA_ID_MESG_DEF developer_data_id_mesg_def = +{ + 0, // reserved_1 + FIT_ARCH_ENDIAN, // arch + FIT_MESG_NUM_DEVELOPER_DATA_ID, // global_mesg_num + 5, // num_fields + { // field_def_num, size, base_type + FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_ID, (sizeof(FIT_BYTE)*16), FIT_BASE_TYPE_BYTE, + FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_ID, (sizeof(FIT_BYTE)*16), FIT_BASE_TYPE_BYTE, + FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_VERSION, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32, + FIT_DEVELOPER_DATA_ID_FIELD_NUM_MANUFACTURER_ID, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16, + FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_DATA_INDEX, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8, + } +}; + + +const FIT_CONST_MESG_DEF_PTR fit_mesg_defs[] = +{ + (FIT_CONST_MESG_DEF_PTR) &pad_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &file_id_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &file_creator_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &software_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &slave_device_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &capabilities_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &file_capabilities_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &mesg_capabilities_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &field_capabilities_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &device_settings_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &user_profile_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &hrm_profile_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &sdm_profile_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &bike_profile_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &connectivity_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &zones_target_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &sport_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &hr_zone_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &speed_zone_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &cadence_zone_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &power_zone_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &met_zone_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &dive_settings_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &goal_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &activity_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &session_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &lap_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &length_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &record_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &event_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &device_info_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &training_file_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &hrv_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &weather_conditions_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &weather_alert_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &nmea_sentence_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &aviation_attitude_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &video_title_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &video_description_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &set_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &course_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &course_point_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &segment_id_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &segment_leaderboard_entry_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &segment_point_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &segment_lap_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &segment_file_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &workout_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &workout_session_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &workout_step_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &exercise_title_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &schedule_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &totals_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &weight_scale_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &blood_pressure_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &monitoring_info_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &monitoring_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &hr_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &ant_rx_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &ant_tx_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &exd_screen_configuration_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &exd_data_field_configuration_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &exd_data_concept_configuration_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &field_description_mesg_def, + (FIT_CONST_MESG_DEF_PTR) &developer_data_id_mesg_def, +}; + +/////////////////////////////////////////////////////////////////////// +// Files +/////////////////////////////////////////////////////////////////////// + +const FIT_FILE_MESG device_file_mesgs[] = +{ + { FIT_STRUCT_OFFSET(file_id_mesg_def, FIT_DEVICE_FILE), FIT_STRUCT_OFFSET(file_id_mesg, FIT_DEVICE_FILE) + FIT_HDR_SIZE, FIT_MESG_NUM_FILE_ID, FIT_DEVICE_FILE_FILE_ID_MESGS, FIT_MESG_FILE_ID}, +}; + +const FIT_FILE_DEF fit_file_defs[] = +{ + { FIT_DEVICE_FILE_DATA_SIZE, (FIT_FILE_MESG *) &device_file_mesgs, FIT_DEVICE_FILE_MESG_COUNT, FIT_FILE_DEVICE, FIT_DEVICE_FILE_COUNT}, +}; diff --git a/Sources/FitFileParserTypes/include/fit.h b/Sources/FitFileParserTypes/include/fit.h index 2647682..351fa91 100644 --- a/Sources/FitFileParserTypes/include/fit.h +++ b/Sources/FitFileParserTypes/include/fit.h @@ -1,397 +1,397 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.40Release -// Tag = production/akw/21.40.00-0-g813c158 -// Product = EXAMPLE -// Alignment = 4 bytes, padding disabled. -//////////////////////////////////////////////////////////////////////////////// - - -#if !defined(FIT_H) -#define FIT_H - -#include "fit_config.h" - -#if defined(FIT_USE_STDINT_H) - #include -#else - typedef unsigned char uint8_t; - typedef signed char int8_t; - typedef unsigned short uint16_t; - typedef signed short int16_t; - typedef unsigned long uint32_t; - typedef signed long int32_t; - typedef signed long long int64_t; - typedef unsigned long long uint64_t; -#endif - -#if defined(__cplusplus) - extern "C" { -#endif - - -/////////////////////////////////////////////////////////////////////// -// Version -/////////////////////////////////////////////////////////////////////// - -#define FIT_PROTOCOL_VERSION_10 ( ( FIT_UINT8 )( 1 << FIT_PROTOCOL_VERSION_MAJOR_SHIFT ) | 0 ) -#define FIT_PROTOCOL_VERSION_20 ( ( FIT_UINT8 )( 2 << FIT_PROTOCOL_VERSION_MAJOR_SHIFT ) | 0 ) - -#if !defined(FIT_CPP_INCLUDE_C) - #define FIT_PROTOCOL_VERSION_MAJOR(version) ( ( FIT_UINT8 )( version >> FIT_PROTOCOL_VERSION_MAJOR_SHIFT ) ) - #define FIT_PROTOCOL_VERSION_MINOR(version) ( ( FIT_UINT8 )( version & FIT_PROTOCOL_VERSION_MINOR_MASK ) ) - #define FIT_PROTOCOL_VERSION_MAJOR_SHIFT 4 - #define FIT_PROTOCOL_VERSION_MAJOR_MASK ((FIT_UINT8) (0x0F << FIT_PROTOCOL_VERSION_MAJOR_SHIFT)) - #define FIT_PROTOCOL_VERSION_MINOR_MASK ((FIT_UINT8) 0x0F) - - // Deprecated. - #define FIT_PROTOCOL_VERSION FIT_PROTOCOL_VERSION_10 - - #define FIT_PROTOCOL_VERSION_MAX FIT_PROTOCOL_VERSION_20 - - #define FIT_PROFILE_VERSION_MAJOR 21 - #define FIT_PROFILE_VERSION_MINOR 27 - #define FIT_PROFILE_VERSION_SCALE 100 - #define FIT_PROFILE_VERSION ((FIT_UINT16) (FIT_PROFILE_VERSION_MAJOR * 100 + FIT_PROFILE_VERSION_MINOR)) -#endif // !defined(FIT_CPP_INCLUDE_C) - -/////////////////////////////////////////////////////////////////////// -// Type Definitions -/////////////////////////////////////////////////////////////////////// - -#define FIT_ANTFS_FILE_DATA_TYPE 128 - -#define FIT_BASE_TYPE_ENDIAN_FLAG ((FIT_UINT8)0x80) -#define FIT_BASE_TYPE_RESERVED ((FIT_UINT8)0x60) -#define FIT_BASE_TYPE_NUM_MASK ((FIT_UINT8)0x1F) - -typedef uint8_t FIT_ENUM; -typedef const FIT_ENUM * FIT_CONST_ENUM_PTR; -#define FIT_ENUM_INVALID ((FIT_ENUM)0xFF) -#define FIT_BASE_TYPE_ENUM ((FIT_UINT8)0x00) - -typedef int8_t FIT_SINT8; -typedef const FIT_SINT8 * FIT_CONST_SINT8_PTR; -#define FIT_SINT8_INVALID ((FIT_SINT8)0x7F) -#define FIT_BASE_TYPE_SINT8 ((FIT_UINT8)0x01) - -typedef uint8_t FIT_UINT8; -typedef const FIT_UINT8 * FIT_CONST_UINT8_PTR; -#define FIT_UINT8_INVALID ((FIT_UINT8)0xFF) -#define FIT_BASE_TYPE_UINT8 ((FIT_UINT8)0x02) - -typedef int16_t FIT_SINT16; -typedef const FIT_SINT16 * FIT_CONST_SINT16_PTR; -#define FIT_SINT16_INVALID ((FIT_SINT16)0x7FFF) -#define FIT_BASE_TYPE_SINT16 ((FIT_UINT8)0x83) - -typedef uint16_t FIT_UINT16; -typedef const FIT_UINT16 * FIT_CONST_UINT16_PTR; -#define FIT_UINT16_INVALID ((FIT_UINT16)0xFFFF) -#define FIT_BASE_TYPE_UINT16 ((FIT_UINT8)0x84) - -typedef int32_t FIT_SINT32; -typedef const FIT_SINT32 * FIT_CONST_SINT32_PTR; -#define FIT_SINT32_INVALID ((FIT_SINT32)0x7FFFFFFF) -#define FIT_BASE_TYPE_SINT32 ((FIT_UINT8)0x85) - -typedef uint32_t FIT_UINT32; -typedef const FIT_UINT32 * FIT_CONST_UINT32_PTR; -#define FIT_UINT32_INVALID ((FIT_UINT32)0xFFFFFFFF) -#define FIT_BASE_TYPE_UINT32 ((FIT_UINT8)0x86) - -typedef char FIT_STRING; // UTF-8 null terminated string -typedef const FIT_STRING * FIT_CONST_STRING_PTR; -#define FIT_STRING_INVALID ((FIT_STRING)0x00) -#define FIT_BASE_TYPE_STRING ((FIT_UINT8)0x07) - -#if !defined(FIT_CPP_INCLUDE_C) - typedef float FIT_FLOAT32; - typedef const FIT_FLOAT32 * FIT_CONST_FLOAT32_PTR; - #define FIT_FLOAT32_INVALID ((FIT_FLOAT32)*((FIT_FLOAT32*)fit_base_type_invalids[FIT_BASE_TYPE_FLOAT32 & FIT_BASE_TYPE_NUM_MASK])) - #define FIT_BASE_TYPE_FLOAT32 ((FIT_UINT8)0x88) - - typedef double FIT_FLOAT64; - typedef const FIT_FLOAT64 * FIT_CONST_FLOAT64_PTR; - #define FIT_FLOAT64_INVALID ((FIT_FLOAT64)*((FIT_FLOAT64*)fit_base_type_invalids[FIT_BASE_TYPE_FLOAT64 & FIT_BASE_TYPE_NUM_MASK])) - #define FIT_BASE_TYPE_FLOAT64 ((FIT_UINT8)0x89) -#endif // !defined(FIT_CPP_INCLUDE_C) - -typedef uint8_t FIT_UINT8Z; -typedef const FIT_UINT8Z * FIT_CONST_UINT8Z_PTR; -#define FIT_UINT8Z_INVALID ((FIT_UINT8Z)0x00) -#define FIT_BASE_TYPE_UINT8Z ((FIT_UINT8)0x0A) - -typedef uint16_t FIT_UINT16Z; -typedef const FIT_UINT16Z * FIT_CONST_UINT16Z_PTR; -#define FIT_UINT16Z_INVALID ((FIT_UINT16Z)0x0000) -#define FIT_BASE_TYPE_UINT16Z ((FIT_UINT8)0x8B) - -typedef uint32_t FIT_UINT32Z; -typedef const FIT_UINT32Z * FIT_CONST_UINT32Z_PTR; -#define FIT_UINT32Z_INVALID ((FIT_UINT32Z)0x00000000) -#define FIT_BASE_TYPE_UINT32Z ((FIT_UINT8)0x8C) - -typedef uint8_t FIT_BYTE; -typedef const FIT_BYTE * FIT_CONST_BYTE_PTR; -#define FIT_BYTE_INVALID ((FIT_BYTE)0xFF) // Field is invalid if all bytes are invalid. -#define FIT_BASE_TYPE_BYTE ((FIT_UINT8)0x0D) - -typedef int64_t FIT_SINT64; -typedef const FIT_SINT64 * FIT_CONST_SINT64_PTR; -#define FIT_SINT64_INVALID ((FIT_SINT64)0x7FFFFFFFFFFFFFFFL) -#define FIT_BASE_TYPE_SINT64 ((FIT_UINT8)0x8E) - -typedef uint64_t FIT_UINT64; -typedef const FIT_UINT64 * FIT_CONST_UINT64_PTR; -#define FIT_UINT64_INVALID ((FIT_UINT64)0xFFFFFFFFFFFFFFFFL) -#define FIT_BASE_TYPE_UINT64 ((FIT_UINT8)0x8F) - -typedef uint64_t FIT_UINT64Z; -typedef const FIT_UINT64Z * FIT_CONST_UINT64Z_PTR; -#define FIT_UINT64Z_INVALID ((FIT_UINT64Z)0x0000000000000000L) -#define FIT_BASE_TYPE_UINT64Z ((FIT_UINT8)0x90) - -#define FIT_BASE_TYPES 17 - -typedef FIT_ENUM FIT_BOOL; -#define FIT_BOOL_INVALID FIT_ENUM_INVALID -#define FIT_BOOL_FALSE ((FIT_BOOL)0) -#define FIT_BOOL_TRUE ((FIT_BOOL)1) -#define FIT_FALSE FIT_BOOL_FALSE -#define FIT_TRUE FIT_BOOL_TRUE -#define FIT_NULL 0 - -typedef FIT_UINT32 (*FIT_READ_BYTES_FUNC)(void *, FIT_UINT32, FIT_UINT32); -#define FIT_MESG_DEF_HEADER_SIZE FIT_STRUCT_OFFSET(fields, FIT_MESG_DEF) - - -/////////////////////////////////////////////////////////////////////// -// File Header -/////////////////////////////////////////////////////////////////////// - -typedef struct -{ - FIT_UINT8 header_size; // FIT_FILE_HDR_SIZE (size of this structure) - FIT_UINT8 protocol_version; // FIT_PROTOCOL_VERSION - FIT_UINT16 profile_version; // FIT_PROFILE_VERSION - FIT_UINT32 data_size; // Does not include file header or crc. Little endian format. - FIT_UINT8 data_type[4]; // ".FIT" - FIT_UINT16 crc; // CRC of this file header in little endian format. -} FIT_FILE_HDR; - -#define FIT_FILE_HDR_SIZE 14 -#define FIT_FILE_CRC_SIZE 2 - - -/////////////////////////////////////////////////////////////////////// -// Record Definitions -/////////////////////////////////////////////////////////////////////// - -#define FIT_HDR_SIZE 1 -#define FIT_HDR_TIME_REC_BIT ((FIT_UINT8) 0x80) -#define FIT_HDR_TIME_TYPE_MASK ((FIT_UINT8) 0x60) -#define FIT_HDR_TIME_TYPE_SHIFT 5 -#define FIT_HDR_TIME_OFFSET_MASK ((FIT_UINT8) 0x1F) -#define FIT_HDR_TYPE_DEF_BIT ((FIT_UINT8) 0x40) -#define FIT_HDR_DEV_DATA_BIT ((FIT_UINT8) 0x20) -#define FIT_HDR_TYPE_MASK ((FIT_UINT8) 0x0F) -#define FIT_MAX_LOCAL_MESGS (FIT_HDR_TYPE_MASK + 1) - -/////////////////////////////////////////////////////////////////////// -// File Definitions -/////////////////////////////////////////////////////////////////////// - -typedef struct -{ - FIT_UINT32 def_file_offset; - FIT_UINT32 data_file_offset; - FIT_UINT16 num; - FIT_UINT16 count; - FIT_UINT16 mesg; -} FIT_FILE_MESG; - -typedef struct -{ - FIT_UINT32 data_size; - const FIT_FILE_MESG *mesgs; - FIT_UINT16 mesg_count; - FIT_UINT8 type; - FIT_UINT8 count; -} FIT_FILE_DEF; - - -/////////////////////////////////////////////////////////////////////// -// Message Definitions -/////////////////////////////////////////////////////////////////////// - -typedef struct -{ - FIT_UINT8 field_def_num; - FIT_UINT8 size; - FIT_UINT8 base_type; -} FIT_FIELD_DEF; - -#define FIT_FIELD_DEF_SIZE 3 - -typedef struct -{ - FIT_UINT8 def_num; - FIT_UINT8 size; - FIT_UINT8 dev_index; -} FIT_DEV_FIELD_DEF; - -#define FIT_DEV_FIELD_DEF_SIZE 3 - -typedef struct -{ - FIT_UINT8 reserved_1; - FIT_UINT8 arch; - FIT_UINT16 global_mesg_num; - FIT_UINT8 num_fields; - FIT_UINT8 fields[1]; -} FIT_MESG_DEF; - -#define FIT_MAX_MESG_SIZE ((FIT_UINT16)65535) - -#define FIT_ARCH_ENDIAN_MASK ((FIT_UINT8)0x01) -#define FIT_ARCH_ENDIAN_LITTLE 0 -#define FIT_ARCH_ENDIAN_BIG 1 - - -/////////////////////////////////////////////////////////////////////// -// Field Definitions -/////////////////////////////////////////////////////////////////////// - -#define FIT_MAX_FIELD_SIZE ((FIT_UINT8)255) -#define FIT_FIELD_NUM_INVALID ((FIT_UINT8)0xFF) -#define FIT_FIELD_NUM_MESSAGE_INDEX ((FIT_UINT8)254) -#define FIT_FIELD_NUM_TIMESTAMP ((FIT_UINT8)253) - -#define FIT_MESSAGE_INDEX_FIELD_NUM FIT_FIELD_NUM_MESSAGE_INDEX // For reverse compatibility only. Use FIT_FIELD_NUM_MESSAGE_INDEX instead. -#define FIT_TIMESTAMP_FIELD_NUM FIT_FIELD_NUM_TIMESTAMP // For reverse compatibility only. Use FIT_FIELD_NUM_TIMESTAMP instead. - - -/////////////////////////////////////////////////////////////////////// -// Macros -/////////////////////////////////////////////////////////////////////// - -#define FIT_STRUCT_OFFSET(MEMBER, STRUCT_TYPE) ( ((FIT_UINT8 *) &(((STRUCT_TYPE *) FIT_NULL)->MEMBER)) - ((FIT_UINT8 *) (FIT_NULL)) ) // Computes the byte offset of a member in a file. Compiles to a constant. - -#define FIT_MESG_DEF_FIELD_OFFSET(FIELD_MEMBER, FIELD_INDEX) (FIT_STRUCT_OFFSET(FIELD_MEMBER, FIT_FIELD_DEF) + FIT_FIELD_DEF_SIZE * FIELD_INDEX) // Computes the byte offset of a field definition member. Compiles to a constant. - -// Offset of message in file including file header. -#define FIT_MESG_OFFSET(MESG_MEMBER, MESG_INDEX, MESG_SIZE, FILE) (FIT_STRUCT_OFFSET(MESG_MEMBER, FILE) + MESG_INDEX * (FIT_HDR_SIZE + MESG_SIZE) + FIT_HDR_SIZE) // Computes the byte offset of a message in a file structure. Compiles to a constant. -#define FIT_MESG_DEF_OFFSET(MESG_DEF_MEMBER, FILE) (FIT_STRUCT_OFFSET(MESG_DEF_MEMBER, FILE) + FIT_HDR_SIZE) // Computes the byte offset of a message definition in a file structure. Compiles to a constant. - -// Below macros are obsolete because C file structures now include file header. For reverse compatibility only. -#define FIT_FILE_MESG_OFFSET(MESG_MEMBER, MESG_INDEX, MESG_SIZE, FILE) FIT_MESG_OFFSET(MESG_MEMBER, MESG_INDEX, MESG_SIZE, FILE) -#define FIT_FILE_MESG_DEF_OFFSET(MESG_DEF_MEMBER, FILE) FIT_MESG_DEF_OFFSET(MESG_DEF_MEMBER, FILE) -#define FIT_FILE_MESG_DEF_FIELD_OFFSET(FIELD_MEMBER, FIELD_INDEX) FIT_MESG_DEF_FIELD_OFFSET(FIELD_MEMBER, FIELD_INDEX) - - -/////////////////////////////////////////////////////////////////////// -// Public Constants -/////////////////////////////////////////////////////////////////////// - -extern const FIT_UINT8 fit_base_type_sizes[FIT_BASE_TYPES]; -extern const FIT_CONST_UINT8_PTR fit_base_type_invalids[FIT_BASE_TYPES]; - - -/////////////////////////////////////////////////////////////////////// -// Public Functions -/////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////// -// Returns architecture type. -// Includes runtime check for little or big endian. -// See FIT_MESG_DEF->arch and FIT_ARCH_*. -/////////////////////////////////////////////////////////////////////// -FIT_UINT8 Fit_GetArch(void); - -/////////////////////////////////////////////////////////////////////// -// Returns message definition corresponding to global message number. -/////////////////////////////////////////////////////////////////////// -const FIT_MESG_DEF *Fit_GetMesgDef(FIT_UINT16 global_mesg_num); - -/////////////////////////////////////////////////////////////////////// -// Returns message definition corresponding to FIT_MESG enum. -/////////////////////////////////////////////////////////////////////// -const FIT_MESG_DEF *Fit_GetMesgDefFromEnum(FIT_UINT32 fit_mesg_enum); - -/////////////////////////////////////////////////////////////////////// -// Returns the size of message definition. -/////////////////////////////////////////////////////////////////////// -FIT_UINT16 Fit_GetMesgDefSize(const FIT_MESG_DEF *mesg_def); - -#if !defined(FIT_16BIT_MESG_LENGTH_SUPPORT) -/////////////////////////////////////////////////////////////////////// -// In SDK 21.00.00 Some APIs were modified to allow for Messages with -// length > 255 bytes. This config item was added for developer -// awareness of the modifications. -// Once Developer usages have been evaluated add: -// #define FIT_16BIT_MESG_LENGTH_SUPPORT to fit_config.h -/////////////////////////////////////////////////////////////////////// -#error 16 bit message length is required -#endif // !defined(FIT_16BIT_MESG_LENGTH_SUPPORT) - -#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) -/////////////////////////////////////////////////////////////////////// -// Returns the size of message corresponding to global message number. -/////////////////////////////////////////////////////////////////////// -FIT_UINT16 Fit_GetMesgSize(FIT_UINT16 global_mesg_num); -#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) - -#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) -/////////////////////////////////////////////////////////////////////// -// Returns the size of message corresponding to FIT_MESG enum. -/////////////////////////////////////////////////////////////////////// -FIT_UINT16 Fit_GetMesgSizeFromEnum(FIT_UINT32 fit_mesg_enum); -#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) - -/////////////////////////////////////////////////////////////////////// -// Initializes message with invalids. -// Returns 1 if successful, otherwise 0. -/////////////////////////////////////////////////////////////////////// -FIT_BOOL Fit_InitMesg(const FIT_MESG_DEF *mesg_def, void *mesg); - -#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) -/////////////////////////////////////////////////////////////////////// -// Returns the byte offset of a field in a message. -/////////////////////////////////////////////////////////////////////// -FIT_UINT16 Fit_GetFieldOffset(const FIT_MESG_DEF *mesg_def, FIT_UINT8 field_def_num); -#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) - -/////////////////////////////////////////////////////////////////////// -// Returns the definition for a field in a message. -// field_def_num is set to FIT_FIELD_NUM_INVALID if field is not found in message. -/////////////////////////////////////////////////////////////////////// -FIT_FIELD_DEF Fit_GetFieldDef(const FIT_MESG_DEF *mesg_def, FIT_UINT8 field_def_num); - -/////////////////////////////////////////////////////////////////////// -// Finds the byte offset of a message with the given message index in a FIT file -// Requires a pointer to a function which can read a given number of bytes from a provided offset in a FIT file. -// Returns the local message number if successful, or FIT_UINT8_INVALID if unsuccessful. -/////////////////////////////////////////////////////////////////////// -FIT_UINT8 Fit_LookupMessage(FIT_UINT16 global_mesg_num, FIT_UINT16 message_index, FIT_UINT32 *offset, FIT_READ_BYTES_FUNC read_bytes_func, FIT_BOOL read_header); - -/////////////////////////////////////////////////////////////////////// -// Returns the byte offset of a message within a file. -/////////////////////////////////////////////////////////////////////// -FIT_UINT32 Fit_GetFileMesgOffset(const FIT_FILE_DEF *file_def, FIT_UINT16 mesg_num, FIT_UINT16 mesg_index); - -#if defined(__cplusplus) - } -#endif - -#endif // !defined(FIT_H) +//////////////////////////////////////////////////////////////////////////////// +// The following FIT Protocol software provided may be used with FIT protocol +// devices only and remains the copyrighted property of Garmin Canada Inc. +// The software is being provided on an "as-is" basis and as an accommodation, +// and therefore all warranties, representations, or guarantees of any kind +// (whether express, implied or statutory) including, without limitation, +// warranties of merchantability, non-infringement, or fitness for a particular +// purpose, are specifically disclaimed. +// +// Copyright 2020 Garmin Canada Inc. +//////////////////////////////////////////////////////////////////////////////// +// ****WARNING**** This file is auto-generated! Do NOT edit this file. +// Profile Version = 21.40Release +// Tag = production/akw/21.40.00-0-g813c158 +// Product = EXAMPLE +// Alignment = 4 bytes, padding disabled. +//////////////////////////////////////////////////////////////////////////////// + + +#if !defined(FIT_H) +#define FIT_H + +#include "fit_config.h" + +#if defined(FIT_USE_STDINT_H) + #include +#else + typedef unsigned char uint8_t; + typedef signed char int8_t; + typedef unsigned short uint16_t; + typedef signed short int16_t; + typedef unsigned long uint32_t; + typedef signed long int32_t; + typedef signed long long int64_t; + typedef unsigned long long uint64_t; +#endif + +#if defined(__cplusplus) + extern "C" { +#endif + + +/////////////////////////////////////////////////////////////////////// +// Version +/////////////////////////////////////////////////////////////////////// + +#define FIT_PROTOCOL_VERSION_10 ( ( FIT_UINT8 )( 1 << FIT_PROTOCOL_VERSION_MAJOR_SHIFT ) | 0 ) +#define FIT_PROTOCOL_VERSION_20 ( ( FIT_UINT8 )( 2 << FIT_PROTOCOL_VERSION_MAJOR_SHIFT ) | 0 ) + +#if !defined(FIT_CPP_INCLUDE_C) + #define FIT_PROTOCOL_VERSION_MAJOR(version) ( ( FIT_UINT8 )( version >> FIT_PROTOCOL_VERSION_MAJOR_SHIFT ) ) + #define FIT_PROTOCOL_VERSION_MINOR(version) ( ( FIT_UINT8 )( version & FIT_PROTOCOL_VERSION_MINOR_MASK ) ) + #define FIT_PROTOCOL_VERSION_MAJOR_SHIFT 4 + #define FIT_PROTOCOL_VERSION_MAJOR_MASK ((FIT_UINT8) (0x0F << FIT_PROTOCOL_VERSION_MAJOR_SHIFT)) + #define FIT_PROTOCOL_VERSION_MINOR_MASK ((FIT_UINT8) 0x0F) + + // Deprecated. + #define FIT_PROTOCOL_VERSION FIT_PROTOCOL_VERSION_10 + + #define FIT_PROTOCOL_VERSION_MAX FIT_PROTOCOL_VERSION_20 + + #define FIT_PROFILE_VERSION_MAJOR 21 + #define FIT_PROFILE_VERSION_MINOR 40 + #define FIT_PROFILE_VERSION_SCALE 100 + #define FIT_PROFILE_VERSION ((FIT_UINT16) (FIT_PROFILE_VERSION_MAJOR * 100 + FIT_PROFILE_VERSION_MINOR)) +#endif // !defined(FIT_CPP_INCLUDE_C) + +/////////////////////////////////////////////////////////////////////// +// Type Definitions +/////////////////////////////////////////////////////////////////////// + +#define FIT_ANTFS_FILE_DATA_TYPE 128 + +#define FIT_BASE_TYPE_ENDIAN_FLAG ((FIT_UINT8)0x80) +#define FIT_BASE_TYPE_RESERVED ((FIT_UINT8)0x60) +#define FIT_BASE_TYPE_NUM_MASK ((FIT_UINT8)0x1F) + +typedef uint8_t FIT_ENUM; +typedef const FIT_ENUM * FIT_CONST_ENUM_PTR; +#define FIT_ENUM_INVALID ((FIT_ENUM)0xFF) +#define FIT_BASE_TYPE_ENUM ((FIT_UINT8)0x00) + +typedef int8_t FIT_SINT8; +typedef const FIT_SINT8 * FIT_CONST_SINT8_PTR; +#define FIT_SINT8_INVALID ((FIT_SINT8)0x7F) +#define FIT_BASE_TYPE_SINT8 ((FIT_UINT8)0x01) + +typedef uint8_t FIT_UINT8; +typedef const FIT_UINT8 * FIT_CONST_UINT8_PTR; +#define FIT_UINT8_INVALID ((FIT_UINT8)0xFF) +#define FIT_BASE_TYPE_UINT8 ((FIT_UINT8)0x02) + +typedef int16_t FIT_SINT16; +typedef const FIT_SINT16 * FIT_CONST_SINT16_PTR; +#define FIT_SINT16_INVALID ((FIT_SINT16)0x7FFF) +#define FIT_BASE_TYPE_SINT16 ((FIT_UINT8)0x83) + +typedef uint16_t FIT_UINT16; +typedef const FIT_UINT16 * FIT_CONST_UINT16_PTR; +#define FIT_UINT16_INVALID ((FIT_UINT16)0xFFFF) +#define FIT_BASE_TYPE_UINT16 ((FIT_UINT8)0x84) + +typedef int32_t FIT_SINT32; +typedef const FIT_SINT32 * FIT_CONST_SINT32_PTR; +#define FIT_SINT32_INVALID ((FIT_SINT32)0x7FFFFFFF) +#define FIT_BASE_TYPE_SINT32 ((FIT_UINT8)0x85) + +typedef uint32_t FIT_UINT32; +typedef const FIT_UINT32 * FIT_CONST_UINT32_PTR; +#define FIT_UINT32_INVALID ((FIT_UINT32)0xFFFFFFFF) +#define FIT_BASE_TYPE_UINT32 ((FIT_UINT8)0x86) + +typedef char FIT_STRING; // UTF-8 null terminated string +typedef const FIT_STRING * FIT_CONST_STRING_PTR; +#define FIT_STRING_INVALID ((FIT_STRING)0x00) +#define FIT_BASE_TYPE_STRING ((FIT_UINT8)0x07) + +#if !defined(FIT_CPP_INCLUDE_C) + typedef float FIT_FLOAT32; + typedef const FIT_FLOAT32 * FIT_CONST_FLOAT32_PTR; + #define FIT_FLOAT32_INVALID ((FIT_FLOAT32)*((FIT_FLOAT32*)fit_base_type_invalids[FIT_BASE_TYPE_FLOAT32 & FIT_BASE_TYPE_NUM_MASK])) + #define FIT_BASE_TYPE_FLOAT32 ((FIT_UINT8)0x88) + + typedef double FIT_FLOAT64; + typedef const FIT_FLOAT64 * FIT_CONST_FLOAT64_PTR; + #define FIT_FLOAT64_INVALID ((FIT_FLOAT64)*((FIT_FLOAT64*)fit_base_type_invalids[FIT_BASE_TYPE_FLOAT64 & FIT_BASE_TYPE_NUM_MASK])) + #define FIT_BASE_TYPE_FLOAT64 ((FIT_UINT8)0x89) +#endif // !defined(FIT_CPP_INCLUDE_C) + +typedef uint8_t FIT_UINT8Z; +typedef const FIT_UINT8Z * FIT_CONST_UINT8Z_PTR; +#define FIT_UINT8Z_INVALID ((FIT_UINT8Z)0x00) +#define FIT_BASE_TYPE_UINT8Z ((FIT_UINT8)0x0A) + +typedef uint16_t FIT_UINT16Z; +typedef const FIT_UINT16Z * FIT_CONST_UINT16Z_PTR; +#define FIT_UINT16Z_INVALID ((FIT_UINT16Z)0x0000) +#define FIT_BASE_TYPE_UINT16Z ((FIT_UINT8)0x8B) + +typedef uint32_t FIT_UINT32Z; +typedef const FIT_UINT32Z * FIT_CONST_UINT32Z_PTR; +#define FIT_UINT32Z_INVALID ((FIT_UINT32Z)0x00000000) +#define FIT_BASE_TYPE_UINT32Z ((FIT_UINT8)0x8C) + +typedef uint8_t FIT_BYTE; +typedef const FIT_BYTE * FIT_CONST_BYTE_PTR; +#define FIT_BYTE_INVALID ((FIT_BYTE)0xFF) // Field is invalid if all bytes are invalid. +#define FIT_BASE_TYPE_BYTE ((FIT_UINT8)0x0D) + +typedef int64_t FIT_SINT64; +typedef const FIT_SINT64 * FIT_CONST_SINT64_PTR; +#define FIT_SINT64_INVALID ((FIT_SINT64)0x7FFFFFFFFFFFFFFFL) +#define FIT_BASE_TYPE_SINT64 ((FIT_UINT8)0x8E) + +typedef uint64_t FIT_UINT64; +typedef const FIT_UINT64 * FIT_CONST_UINT64_PTR; +#define FIT_UINT64_INVALID ((FIT_UINT64)0xFFFFFFFFFFFFFFFFL) +#define FIT_BASE_TYPE_UINT64 ((FIT_UINT8)0x8F) + +typedef uint64_t FIT_UINT64Z; +typedef const FIT_UINT64Z * FIT_CONST_UINT64Z_PTR; +#define FIT_UINT64Z_INVALID ((FIT_UINT64Z)0x0000000000000000L) +#define FIT_BASE_TYPE_UINT64Z ((FIT_UINT8)0x90) + +#define FIT_BASE_TYPES 17 + +typedef FIT_ENUM FIT_BOOL; +#define FIT_BOOL_INVALID FIT_ENUM_INVALID +#define FIT_BOOL_FALSE ((FIT_BOOL)0) +#define FIT_BOOL_TRUE ((FIT_BOOL)1) +#define FIT_FALSE FIT_BOOL_FALSE +#define FIT_TRUE FIT_BOOL_TRUE +#define FIT_NULL 0 + +typedef FIT_UINT32 (*FIT_READ_BYTES_FUNC)(void *, FIT_UINT32, FIT_UINT32); +#define FIT_MESG_DEF_HEADER_SIZE FIT_STRUCT_OFFSET(fields, FIT_MESG_DEF) + + +/////////////////////////////////////////////////////////////////////// +// File Header +/////////////////////////////////////////////////////////////////////// + +typedef struct +{ + FIT_UINT8 header_size; // FIT_FILE_HDR_SIZE (size of this structure) + FIT_UINT8 protocol_version; // FIT_PROTOCOL_VERSION + FIT_UINT16 profile_version; // FIT_PROFILE_VERSION + FIT_UINT32 data_size; // Does not include file header or crc. Little endian format. + FIT_UINT8 data_type[4]; // ".FIT" + FIT_UINT16 crc; // CRC of this file header in little endian format. +} FIT_FILE_HDR; + +#define FIT_FILE_HDR_SIZE 14 +#define FIT_FILE_CRC_SIZE 2 + + +/////////////////////////////////////////////////////////////////////// +// Record Definitions +/////////////////////////////////////////////////////////////////////// + +#define FIT_HDR_SIZE 1 +#define FIT_HDR_TIME_REC_BIT ((FIT_UINT8) 0x80) +#define FIT_HDR_TIME_TYPE_MASK ((FIT_UINT8) 0x60) +#define FIT_HDR_TIME_TYPE_SHIFT 5 +#define FIT_HDR_TIME_OFFSET_MASK ((FIT_UINT8) 0x1F) +#define FIT_HDR_TYPE_DEF_BIT ((FIT_UINT8) 0x40) +#define FIT_HDR_DEV_DATA_BIT ((FIT_UINT8) 0x20) +#define FIT_HDR_TYPE_MASK ((FIT_UINT8) 0x0F) +#define FIT_MAX_LOCAL_MESGS (FIT_HDR_TYPE_MASK + 1) + +/////////////////////////////////////////////////////////////////////// +// File Definitions +/////////////////////////////////////////////////////////////////////// + +typedef struct +{ + FIT_UINT32 def_file_offset; + FIT_UINT32 data_file_offset; + FIT_UINT16 num; + FIT_UINT16 count; + FIT_UINT16 mesg; +} FIT_FILE_MESG; + +typedef struct +{ + FIT_UINT32 data_size; + const FIT_FILE_MESG *mesgs; + FIT_UINT16 mesg_count; + FIT_UINT8 type; + FIT_UINT8 count; +} FIT_FILE_DEF; + + +/////////////////////////////////////////////////////////////////////// +// Message Definitions +/////////////////////////////////////////////////////////////////////// + +typedef struct +{ + FIT_UINT8 field_def_num; + FIT_UINT8 size; + FIT_UINT8 base_type; +} FIT_FIELD_DEF; + +#define FIT_FIELD_DEF_SIZE 3 + +typedef struct +{ + FIT_UINT8 def_num; + FIT_UINT8 size; + FIT_UINT8 dev_index; +} FIT_DEV_FIELD_DEF; + +#define FIT_DEV_FIELD_DEF_SIZE 3 + +typedef struct +{ + FIT_UINT8 reserved_1; + FIT_UINT8 arch; + FIT_UINT16 global_mesg_num; + FIT_UINT8 num_fields; + FIT_UINT8 fields[1]; +} FIT_MESG_DEF; + +#define FIT_MAX_MESG_SIZE ((FIT_UINT16)65535) + +#define FIT_ARCH_ENDIAN_MASK ((FIT_UINT8)0x01) +#define FIT_ARCH_ENDIAN_LITTLE 0 +#define FIT_ARCH_ENDIAN_BIG 1 + + +/////////////////////////////////////////////////////////////////////// +// Field Definitions +/////////////////////////////////////////////////////////////////////// + +#define FIT_MAX_FIELD_SIZE ((FIT_UINT8)255) +#define FIT_FIELD_NUM_INVALID ((FIT_UINT8)0xFF) +#define FIT_FIELD_NUM_MESSAGE_INDEX ((FIT_UINT8)254) +#define FIT_FIELD_NUM_TIMESTAMP ((FIT_UINT8)253) + +#define FIT_MESSAGE_INDEX_FIELD_NUM FIT_FIELD_NUM_MESSAGE_INDEX // For reverse compatibility only. Use FIT_FIELD_NUM_MESSAGE_INDEX instead. +#define FIT_TIMESTAMP_FIELD_NUM FIT_FIELD_NUM_TIMESTAMP // For reverse compatibility only. Use FIT_FIELD_NUM_TIMESTAMP instead. + + +/////////////////////////////////////////////////////////////////////// +// Macros +/////////////////////////////////////////////////////////////////////// + +#define FIT_STRUCT_OFFSET(MEMBER, STRUCT_TYPE) ( ((FIT_UINT8 *) &(((STRUCT_TYPE *) FIT_NULL)->MEMBER)) - ((FIT_UINT8 *) (FIT_NULL)) ) // Computes the byte offset of a member in a file. Compiles to a constant. + +#define FIT_MESG_DEF_FIELD_OFFSET(FIELD_MEMBER, FIELD_INDEX) (FIT_STRUCT_OFFSET(FIELD_MEMBER, FIT_FIELD_DEF) + FIT_FIELD_DEF_SIZE * FIELD_INDEX) // Computes the byte offset of a field definition member. Compiles to a constant. + +// Offset of message in file including file header. +#define FIT_MESG_OFFSET(MESG_MEMBER, MESG_INDEX, MESG_SIZE, FILE) (FIT_STRUCT_OFFSET(MESG_MEMBER, FILE) + MESG_INDEX * (FIT_HDR_SIZE + MESG_SIZE) + FIT_HDR_SIZE) // Computes the byte offset of a message in a file structure. Compiles to a constant. +#define FIT_MESG_DEF_OFFSET(MESG_DEF_MEMBER, FILE) (FIT_STRUCT_OFFSET(MESG_DEF_MEMBER, FILE) + FIT_HDR_SIZE) // Computes the byte offset of a message definition in a file structure. Compiles to a constant. + +// Below macros are obsolete because C file structures now include file header. For reverse compatibility only. +#define FIT_FILE_MESG_OFFSET(MESG_MEMBER, MESG_INDEX, MESG_SIZE, FILE) FIT_MESG_OFFSET(MESG_MEMBER, MESG_INDEX, MESG_SIZE, FILE) +#define FIT_FILE_MESG_DEF_OFFSET(MESG_DEF_MEMBER, FILE) FIT_MESG_DEF_OFFSET(MESG_DEF_MEMBER, FILE) +#define FIT_FILE_MESG_DEF_FIELD_OFFSET(FIELD_MEMBER, FIELD_INDEX) FIT_MESG_DEF_FIELD_OFFSET(FIELD_MEMBER, FIELD_INDEX) + + +/////////////////////////////////////////////////////////////////////// +// Public Constants +/////////////////////////////////////////////////////////////////////// + +extern const FIT_UINT8 fit_base_type_sizes[FIT_BASE_TYPES]; +extern const FIT_CONST_UINT8_PTR fit_base_type_invalids[FIT_BASE_TYPES]; + + +/////////////////////////////////////////////////////////////////////// +// Public Functions +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +// Returns architecture type. +// Includes runtime check for little or big endian. +// See FIT_MESG_DEF->arch and FIT_ARCH_*. +/////////////////////////////////////////////////////////////////////// +FIT_UINT8 Fit_GetArch(void); + +/////////////////////////////////////////////////////////////////////// +// Returns message definition corresponding to global message number. +/////////////////////////////////////////////////////////////////////// +const FIT_MESG_DEF *Fit_GetMesgDef(FIT_UINT16 global_mesg_num); + +/////////////////////////////////////////////////////////////////////// +// Returns message definition corresponding to FIT_MESG enum. +/////////////////////////////////////////////////////////////////////// +const FIT_MESG_DEF *Fit_GetMesgDefFromEnum(FIT_UINT32 fit_mesg_enum); + +/////////////////////////////////////////////////////////////////////// +// Returns the size of message definition. +/////////////////////////////////////////////////////////////////////// +FIT_UINT16 Fit_GetMesgDefSize(const FIT_MESG_DEF *mesg_def); + +#if !defined(FIT_16BIT_MESG_LENGTH_SUPPORT) +/////////////////////////////////////////////////////////////////////// +// In SDK 21.00.00 Some APIs were modified to allow for Messages with +// length > 255 bytes. This config item was added for developer +// awareness of the modifications. +// Once Developer usages have been evaluated add: +// #define FIT_16BIT_MESG_LENGTH_SUPPORT to fit_config.h +/////////////////////////////////////////////////////////////////////// +#error 16 bit message length is required +#endif // !defined(FIT_16BIT_MESG_LENGTH_SUPPORT) + +#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) +/////////////////////////////////////////////////////////////////////// +// Returns the size of message corresponding to global message number. +/////////////////////////////////////////////////////////////////////// +FIT_UINT16 Fit_GetMesgSize(FIT_UINT16 global_mesg_num); +#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) + +#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) +/////////////////////////////////////////////////////////////////////// +// Returns the size of message corresponding to FIT_MESG enum. +/////////////////////////////////////////////////////////////////////// +FIT_UINT16 Fit_GetMesgSizeFromEnum(FIT_UINT32 fit_mesg_enum); +#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) + +/////////////////////////////////////////////////////////////////////// +// Initializes message with invalids. +// Returns 1 if successful, otherwise 0. +/////////////////////////////////////////////////////////////////////// +FIT_BOOL Fit_InitMesg(const FIT_MESG_DEF *mesg_def, void *mesg); + +#if defined(FIT_16BIT_MESG_LENGTH_SUPPORT) +/////////////////////////////////////////////////////////////////////// +// Returns the byte offset of a field in a message. +/////////////////////////////////////////////////////////////////////// +FIT_UINT16 Fit_GetFieldOffset(const FIT_MESG_DEF *mesg_def, FIT_UINT8 field_def_num); +#endif // defined(FIT_16BIT_MESG_LENGTH_SUPPORT) + +/////////////////////////////////////////////////////////////////////// +// Returns the definition for a field in a message. +// field_def_num is set to FIT_FIELD_NUM_INVALID if field is not found in message. +/////////////////////////////////////////////////////////////////////// +FIT_FIELD_DEF Fit_GetFieldDef(const FIT_MESG_DEF *mesg_def, FIT_UINT8 field_def_num); + +/////////////////////////////////////////////////////////////////////// +// Finds the byte offset of a message with the given message index in a FIT file +// Requires a pointer to a function which can read a given number of bytes from a provided offset in a FIT file. +// Returns the local message number if successful, or FIT_UINT8_INVALID if unsuccessful. +/////////////////////////////////////////////////////////////////////// +FIT_UINT8 Fit_LookupMessage(FIT_UINT16 global_mesg_num, FIT_UINT16 message_index, FIT_UINT32 *offset, FIT_READ_BYTES_FUNC read_bytes_func, FIT_BOOL read_header); + +/////////////////////////////////////////////////////////////////////// +// Returns the byte offset of a message within a file. +/////////////////////////////////////////////////////////////////////// +FIT_UINT32 Fit_GetFileMesgOffset(const FIT_FILE_DEF *file_def, FIT_UINT16 mesg_num, FIT_UINT16 mesg_index); + +#if defined(__cplusplus) + } +#endif + +#endif // !defined(FIT_H) diff --git a/Sources/FitFileParserTypes/include/fit_example.h b/Sources/FitFileParserTypes/include/fit_example.h index da03ef9..83edafd 100644 --- a/Sources/FitFileParserTypes/include/fit_example.h +++ b/Sources/FitFileParserTypes/include/fit_example.h @@ -1,1182 +1,1182 @@ -//////////////////////////////////////////////////////////////////////////////// -// The following FIT Protocol software provided may be used with FIT protocol -// devices only and remains the copyrighted property of Garmin Canada Inc. -// The software is being provided on an "as-is" basis and as an accommodation, -// and therefore all warranties, representations, or guarantees of any kind -// (whether express, implied or statutory) including, without limitation, -// warranties of merchantability, non-infringement, or fitness for a particular -// purpose, are specifically disclaimed. -// -// Copyright 2020 Garmin Canada Inc. -//////////////////////////////////////////////////////////////////////////////// -// ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.40Release -// Tag = production/akw/21.40.00-0-g813c158 -// 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_FILE)1) // Read only, single file. Must be in root directory. -#define FIT_FILE_SETTINGS ((FIT_FILE)2) // Read/write, single file. Directory=Settings -#define FIT_FILE_SPORT ((FIT_FILE)3) // Read/write, multiple files, file number = sport type. Directory=Sports -#define FIT_FILE_ACTIVITY ((FIT_FILE)4) // Read/erase, multiple files. Directory=Activities -#define FIT_FILE_WORKOUT ((FIT_FILE)5) // Read/write/erase, multiple files. Directory=Workouts -#define FIT_FILE_COURSE ((FIT_FILE)6) // Read/write/erase, multiple files. Directory=Courses -#define FIT_FILE_SCHEDULES ((FIT_FILE)7) // Read/write, single file. Directory=Schedules -#define FIT_FILE_WEIGHT ((FIT_FILE)9) // Read only, single file. Circular buffer. All message definitions at start of file. Directory=Weight -#define FIT_FILE_TOTALS ((FIT_FILE)10) // Read only, single file. Directory=Totals -#define FIT_FILE_GOALS ((FIT_FILE)11) // Read/write, single file. Directory=Goals -#define FIT_FILE_BLOOD_PRESSURE ((FIT_FILE)14) // Read only. Directory=Blood Pressure -#define FIT_FILE_MONITORING_A ((FIT_FILE)15) // Read only. Directory=Monitoring. File number=sub type. -#define FIT_FILE_ACTIVITY_SUMMARY ((FIT_FILE)20) // Read/erase, multiple files. Directory=Activities -#define FIT_FILE_MONITORING_DAILY ((FIT_FILE)28) -#define FIT_FILE_MONITORING_B ((FIT_FILE)32) // Read only. Directory=Monitoring. File number=identifier -#define FIT_FILE_SEGMENT ((FIT_FILE)34) // Read/write/erase. Multiple Files. Directory=Segments -#define FIT_FILE_SEGMENT_LIST ((FIT_FILE)35) // Read/write/erase. Single File. Directory=Segments -#define FIT_FILE_EXD_CONFIGURATION ((FIT_FILE)40) // Read/write/erase. Single File. Directory=Settings -#define FIT_FILE_MFG_RANGE_MIN ((FIT_FILE)0xF7) // 0xF7 - 0xFE reserved for manufacturer specific file types -#define FIT_FILE_MFG_RANGE_MAX ((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_MESG_NUM)0) -#define FIT_MESG_NUM_CAPABILITIES ((FIT_MESG_NUM)1) -#define FIT_MESG_NUM_DEVICE_SETTINGS ((FIT_MESG_NUM)2) -#define FIT_MESG_NUM_USER_PROFILE ((FIT_MESG_NUM)3) -#define FIT_MESG_NUM_HRM_PROFILE ((FIT_MESG_NUM)4) -#define FIT_MESG_NUM_SDM_PROFILE ((FIT_MESG_NUM)5) -#define FIT_MESG_NUM_BIKE_PROFILE ((FIT_MESG_NUM)6) -#define FIT_MESG_NUM_ZONES_TARGET ((FIT_MESG_NUM)7) -#define FIT_MESG_NUM_HR_ZONE ((FIT_MESG_NUM)8) -#define FIT_MESG_NUM_POWER_ZONE ((FIT_MESG_NUM)9) -#define FIT_MESG_NUM_MET_ZONE ((FIT_MESG_NUM)10) -#define FIT_MESG_NUM_SPORT ((FIT_MESG_NUM)12) -#define FIT_MESG_NUM_GOAL ((FIT_MESG_NUM)15) -#define FIT_MESG_NUM_SESSION ((FIT_MESG_NUM)18) -#define FIT_MESG_NUM_LAP ((FIT_MESG_NUM)19) -#define FIT_MESG_NUM_RECORD ((FIT_MESG_NUM)20) -#define FIT_MESG_NUM_EVENT ((FIT_MESG_NUM)21) -#define FIT_MESG_NUM_DEVICE_INFO ((FIT_MESG_NUM)23) -#define FIT_MESG_NUM_WORKOUT ((FIT_MESG_NUM)26) -#define FIT_MESG_NUM_WORKOUT_STEP ((FIT_MESG_NUM)27) -#define FIT_MESG_NUM_SCHEDULE ((FIT_MESG_NUM)28) -#define FIT_MESG_NUM_WEIGHT_SCALE ((FIT_MESG_NUM)30) -#define FIT_MESG_NUM_COURSE ((FIT_MESG_NUM)31) -#define FIT_MESG_NUM_COURSE_POINT ((FIT_MESG_NUM)32) -#define FIT_MESG_NUM_TOTALS ((FIT_MESG_NUM)33) -#define FIT_MESG_NUM_ACTIVITY ((FIT_MESG_NUM)34) -#define FIT_MESG_NUM_SOFTWARE ((FIT_MESG_NUM)35) -#define FIT_MESG_NUM_FILE_CAPABILITIES ((FIT_MESG_NUM)37) -#define FIT_MESG_NUM_MESG_CAPABILITIES ((FIT_MESG_NUM)38) -#define FIT_MESG_NUM_FIELD_CAPABILITIES ((FIT_MESG_NUM)39) -#define FIT_MESG_NUM_FILE_CREATOR ((FIT_MESG_NUM)49) -#define FIT_MESG_NUM_BLOOD_PRESSURE ((FIT_MESG_NUM)51) -#define FIT_MESG_NUM_SPEED_ZONE ((FIT_MESG_NUM)53) -#define FIT_MESG_NUM_MONITORING ((FIT_MESG_NUM)55) -#define FIT_MESG_NUM_TRAINING_FILE ((FIT_MESG_NUM)72) -#define FIT_MESG_NUM_HRV ((FIT_MESG_NUM)78) -#define FIT_MESG_NUM_ANT_RX ((FIT_MESG_NUM)80) -#define FIT_MESG_NUM_ANT_TX ((FIT_MESG_NUM)81) -#define FIT_MESG_NUM_ANT_CHANNEL_ID ((FIT_MESG_NUM)82) -#define FIT_MESG_NUM_LENGTH ((FIT_MESG_NUM)101) -#define FIT_MESG_NUM_MONITORING_INFO ((FIT_MESG_NUM)103) -#define FIT_MESG_NUM_PAD ((FIT_MESG_NUM)105) -#define FIT_MESG_NUM_SLAVE_DEVICE ((FIT_MESG_NUM)106) -#define FIT_MESG_NUM_CONNECTIVITY ((FIT_MESG_NUM)127) -#define FIT_MESG_NUM_WEATHER_CONDITIONS ((FIT_MESG_NUM)128) -#define FIT_MESG_NUM_WEATHER_ALERT ((FIT_MESG_NUM)129) -#define FIT_MESG_NUM_CADENCE_ZONE ((FIT_MESG_NUM)131) -#define FIT_MESG_NUM_HR ((FIT_MESG_NUM)132) -#define FIT_MESG_NUM_SEGMENT_LAP ((FIT_MESG_NUM)142) -#define FIT_MESG_NUM_MEMO_GLOB ((FIT_MESG_NUM)145) -#define FIT_MESG_NUM_SEGMENT_ID ((FIT_MESG_NUM)148) -#define FIT_MESG_NUM_SEGMENT_LEADERBOARD_ENTRY ((FIT_MESG_NUM)149) -#define FIT_MESG_NUM_SEGMENT_POINT ((FIT_MESG_NUM)150) -#define FIT_MESG_NUM_SEGMENT_FILE ((FIT_MESG_NUM)151) -#define FIT_MESG_NUM_WORKOUT_SESSION ((FIT_MESG_NUM)158) -#define FIT_MESG_NUM_WATCHFACE_SETTINGS ((FIT_MESG_NUM)159) -#define FIT_MESG_NUM_GPS_METADATA ((FIT_MESG_NUM)160) -#define FIT_MESG_NUM_CAMERA_EVENT ((FIT_MESG_NUM)161) -#define FIT_MESG_NUM_TIMESTAMP_CORRELATION ((FIT_MESG_NUM)162) -#define FIT_MESG_NUM_GYROSCOPE_DATA ((FIT_MESG_NUM)164) -#define FIT_MESG_NUM_ACCELEROMETER_DATA ((FIT_MESG_NUM)165) -#define FIT_MESG_NUM_THREE_D_SENSOR_CALIBRATION ((FIT_MESG_NUM)167) -#define FIT_MESG_NUM_VIDEO_FRAME ((FIT_MESG_NUM)169) -#define FIT_MESG_NUM_OBDII_DATA ((FIT_MESG_NUM)174) -#define FIT_MESG_NUM_NMEA_SENTENCE ((FIT_MESG_NUM)177) -#define FIT_MESG_NUM_AVIATION_ATTITUDE ((FIT_MESG_NUM)178) -#define FIT_MESG_NUM_VIDEO ((FIT_MESG_NUM)184) -#define FIT_MESG_NUM_VIDEO_TITLE ((FIT_MESG_NUM)185) -#define FIT_MESG_NUM_VIDEO_DESCRIPTION ((FIT_MESG_NUM)186) -#define FIT_MESG_NUM_VIDEO_CLIP ((FIT_MESG_NUM)187) -#define FIT_MESG_NUM_OHR_SETTINGS ((FIT_MESG_NUM)188) -#define FIT_MESG_NUM_EXD_SCREEN_CONFIGURATION ((FIT_MESG_NUM)200) -#define FIT_MESG_NUM_EXD_DATA_FIELD_CONFIGURATION ((FIT_MESG_NUM)201) -#define FIT_MESG_NUM_EXD_DATA_CONCEPT_CONFIGURATION ((FIT_MESG_NUM)202) -#define FIT_MESG_NUM_FIELD_DESCRIPTION ((FIT_MESG_NUM)206) -#define FIT_MESG_NUM_DEVELOPER_DATA_ID ((FIT_MESG_NUM)207) -#define FIT_MESG_NUM_MAGNETOMETER_DATA ((FIT_MESG_NUM)208) -#define FIT_MESG_NUM_BAROMETER_DATA ((FIT_MESG_NUM)209) -#define FIT_MESG_NUM_ONE_D_SENSOR_CALIBRATION ((FIT_MESG_NUM)210) -#define FIT_MESG_NUM_SET ((FIT_MESG_NUM)225) -#define FIT_MESG_NUM_STRESS_LEVEL ((FIT_MESG_NUM)227) -#define FIT_MESG_NUM_DIVE_SETTINGS ((FIT_MESG_NUM)258) -#define FIT_MESG_NUM_DIVE_GAS ((FIT_MESG_NUM)259) -#define FIT_MESG_NUM_DIVE_ALARM ((FIT_MESG_NUM)262) -#define FIT_MESG_NUM_EXERCISE_TITLE ((FIT_MESG_NUM)264) -#define FIT_MESG_NUM_DIVE_SUMMARY ((FIT_MESG_NUM)268) -#define FIT_MESG_NUM_JUMP ((FIT_MESG_NUM)285) -#define FIT_MESG_NUM_CLIMB_PRO ((FIT_MESG_NUM)317) -#define FIT_MESG_NUM_MFG_RANGE_MIN ((FIT_MESG_NUM)0xFF00) // 0xFF00 - 0xFFFE reserved for manufacturer specific messages -#define FIT_MESG_NUM_MFG_RANGE_MAX ((FIT_MESG_NUM)0xFFFE) // 0xFF00 - 0xFFFE reserved for manufacturer specific messages -#define FIT_MESG_NUM_COUNT 90 - -typedef FIT_UINT8 FIT_CHECKSUM; -#define FIT_CHECKSUM_INVALID FIT_UINT8_INVALID -#define FIT_CHECKSUM_CLEAR ((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_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_FILE_FLAGS)0x02) -#define FIT_FILE_FLAGS_WRITE ((FIT_FILE_FLAGS)0x04) -#define FIT_FILE_FLAGS_ERASE ((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_MESG_COUNT)0) -#define FIT_MESG_COUNT_MAX_PER_FILE ((FIT_MESG_COUNT)1) -#define FIT_MESG_COUNT_MAX_PER_FILE_TYPE ((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_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_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_MESSAGE_INDEX)0x8000) // message is selected if set -#define FIT_MESSAGE_INDEX_RESERVED ((FIT_MESSAGE_INDEX)0x7000) // reserved (default 0) -#define FIT_MESSAGE_INDEX_MASK ((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_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_GENDER)0) -#define FIT_GENDER_MALE ((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_LANGUAGE)0) -#define FIT_LANGUAGE_FRENCH ((FIT_LANGUAGE)1) -#define FIT_LANGUAGE_ITALIAN ((FIT_LANGUAGE)2) -#define FIT_LANGUAGE_GERMAN ((FIT_LANGUAGE)3) -#define FIT_LANGUAGE_SPANISH ((FIT_LANGUAGE)4) -#define FIT_LANGUAGE_CROATIAN ((FIT_LANGUAGE)5) -#define FIT_LANGUAGE_CZECH ((FIT_LANGUAGE)6) -#define FIT_LANGUAGE_DANISH ((FIT_LANGUAGE)7) -#define FIT_LANGUAGE_DUTCH ((FIT_LANGUAGE)8) -#define FIT_LANGUAGE_FINNISH ((FIT_LANGUAGE)9) -#define FIT_LANGUAGE_GREEK ((FIT_LANGUAGE)10) -#define FIT_LANGUAGE_HUNGARIAN ((FIT_LANGUAGE)11) -#define FIT_LANGUAGE_NORWEGIAN ((FIT_LANGUAGE)12) -#define FIT_LANGUAGE_POLISH ((FIT_LANGUAGE)13) -#define FIT_LANGUAGE_PORTUGUESE ((FIT_LANGUAGE)14) -#define FIT_LANGUAGE_SLOVAKIAN ((FIT_LANGUAGE)15) -#define FIT_LANGUAGE_SLOVENIAN ((FIT_LANGUAGE)16) -#define FIT_LANGUAGE_SWEDISH ((FIT_LANGUAGE)17) -#define FIT_LANGUAGE_RUSSIAN ((FIT_LANGUAGE)18) -#define FIT_LANGUAGE_TURKISH ((FIT_LANGUAGE)19) -#define FIT_LANGUAGE_LATVIAN ((FIT_LANGUAGE)20) -#define FIT_LANGUAGE_UKRAINIAN ((FIT_LANGUAGE)21) -#define FIT_LANGUAGE_ARABIC ((FIT_LANGUAGE)22) -#define FIT_LANGUAGE_FARSI ((FIT_LANGUAGE)23) -#define FIT_LANGUAGE_BULGARIAN ((FIT_LANGUAGE)24) -#define FIT_LANGUAGE_ROMANIAN ((FIT_LANGUAGE)25) -#define FIT_LANGUAGE_CHINESE ((FIT_LANGUAGE)26) -#define FIT_LANGUAGE_JAPANESE ((FIT_LANGUAGE)27) -#define FIT_LANGUAGE_KOREAN ((FIT_LANGUAGE)28) -#define FIT_LANGUAGE_TAIWANESE ((FIT_LANGUAGE)29) -#define FIT_LANGUAGE_THAI ((FIT_LANGUAGE)30) -#define FIT_LANGUAGE_HEBREW ((FIT_LANGUAGE)31) -#define FIT_LANGUAGE_BRAZILIAN_PORTUGUESE ((FIT_LANGUAGE)32) -#define FIT_LANGUAGE_INDONESIAN ((FIT_LANGUAGE)33) -#define FIT_LANGUAGE_MALAYSIAN ((FIT_LANGUAGE)34) -#define FIT_LANGUAGE_VIETNAMESE ((FIT_LANGUAGE)35) -#define FIT_LANGUAGE_BURMESE ((FIT_LANGUAGE)36) -#define FIT_LANGUAGE_MONGOLIAN ((FIT_LANGUAGE)37) -#define FIT_LANGUAGE_CUSTOM ((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_LANGUAGE_BITS_0)0x01) -#define FIT_LANGUAGE_BITS_0_FRENCH ((FIT_LANGUAGE_BITS_0)0x02) -#define FIT_LANGUAGE_BITS_0_ITALIAN ((FIT_LANGUAGE_BITS_0)0x04) -#define FIT_LANGUAGE_BITS_0_GERMAN ((FIT_LANGUAGE_BITS_0)0x08) -#define FIT_LANGUAGE_BITS_0_SPANISH ((FIT_LANGUAGE_BITS_0)0x10) -#define FIT_LANGUAGE_BITS_0_CROATIAN ((FIT_LANGUAGE_BITS_0)0x20) -#define FIT_LANGUAGE_BITS_0_CZECH ((FIT_LANGUAGE_BITS_0)0x40) -#define FIT_LANGUAGE_BITS_0_DANISH ((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_LANGUAGE_BITS_1)0x01) -#define FIT_LANGUAGE_BITS_1_FINNISH ((FIT_LANGUAGE_BITS_1)0x02) -#define FIT_LANGUAGE_BITS_1_GREEK ((FIT_LANGUAGE_BITS_1)0x04) -#define FIT_LANGUAGE_BITS_1_HUNGARIAN ((FIT_LANGUAGE_BITS_1)0x08) -#define FIT_LANGUAGE_BITS_1_NORWEGIAN ((FIT_LANGUAGE_BITS_1)0x10) -#define FIT_LANGUAGE_BITS_1_POLISH ((FIT_LANGUAGE_BITS_1)0x20) -#define FIT_LANGUAGE_BITS_1_PORTUGUESE ((FIT_LANGUAGE_BITS_1)0x40) -#define FIT_LANGUAGE_BITS_1_SLOVAKIAN ((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_LANGUAGE_BITS_2)0x01) -#define FIT_LANGUAGE_BITS_2_SWEDISH ((FIT_LANGUAGE_BITS_2)0x02) -#define FIT_LANGUAGE_BITS_2_RUSSIAN ((FIT_LANGUAGE_BITS_2)0x04) -#define FIT_LANGUAGE_BITS_2_TURKISH ((FIT_LANGUAGE_BITS_2)0x08) -#define FIT_LANGUAGE_BITS_2_LATVIAN ((FIT_LANGUAGE_BITS_2)0x10) -#define FIT_LANGUAGE_BITS_2_UKRAINIAN ((FIT_LANGUAGE_BITS_2)0x20) -#define FIT_LANGUAGE_BITS_2_ARABIC ((FIT_LANGUAGE_BITS_2)0x40) -#define FIT_LANGUAGE_BITS_2_FARSI ((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_LANGUAGE_BITS_3)0x01) -#define FIT_LANGUAGE_BITS_3_ROMANIAN ((FIT_LANGUAGE_BITS_3)0x02) -#define FIT_LANGUAGE_BITS_3_CHINESE ((FIT_LANGUAGE_BITS_3)0x04) -#define FIT_LANGUAGE_BITS_3_JAPANESE ((FIT_LANGUAGE_BITS_3)0x08) -#define FIT_LANGUAGE_BITS_3_KOREAN ((FIT_LANGUAGE_BITS_3)0x10) -#define FIT_LANGUAGE_BITS_3_TAIWANESE ((FIT_LANGUAGE_BITS_3)0x20) -#define FIT_LANGUAGE_BITS_3_THAI ((FIT_LANGUAGE_BITS_3)0x40) -#define FIT_LANGUAGE_BITS_3_HEBREW ((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_LANGUAGE_BITS_4)0x01) -#define FIT_LANGUAGE_BITS_4_INDONESIAN ((FIT_LANGUAGE_BITS_4)0x02) -#define FIT_LANGUAGE_BITS_4_MALAYSIAN ((FIT_LANGUAGE_BITS_4)0x04) -#define FIT_LANGUAGE_BITS_4_VIETNAMESE ((FIT_LANGUAGE_BITS_4)0x08) -#define FIT_LANGUAGE_BITS_4_BURMESE ((FIT_LANGUAGE_BITS_4)0x10) -#define FIT_LANGUAGE_BITS_4_MONGOLIAN ((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_TIME_ZONE)0) -#define FIT_TIME_ZONE_BANGKOK ((FIT_TIME_ZONE)1) -#define FIT_TIME_ZONE_BOMBAY ((FIT_TIME_ZONE)2) -#define FIT_TIME_ZONE_BRASILIA ((FIT_TIME_ZONE)3) -#define FIT_TIME_ZONE_CAIRO ((FIT_TIME_ZONE)4) -#define FIT_TIME_ZONE_CAPE_VERDE_IS ((FIT_TIME_ZONE)5) -#define FIT_TIME_ZONE_DARWIN ((FIT_TIME_ZONE)6) -#define FIT_TIME_ZONE_ENIWETOK ((FIT_TIME_ZONE)7) -#define FIT_TIME_ZONE_FIJI ((FIT_TIME_ZONE)8) -#define FIT_TIME_ZONE_HONG_KONG ((FIT_TIME_ZONE)9) -#define FIT_TIME_ZONE_ISLAMABAD ((FIT_TIME_ZONE)10) -#define FIT_TIME_ZONE_KABUL ((FIT_TIME_ZONE)11) -#define FIT_TIME_ZONE_MAGADAN ((FIT_TIME_ZONE)12) -#define FIT_TIME_ZONE_MID_ATLANTIC ((FIT_TIME_ZONE)13) -#define FIT_TIME_ZONE_MOSCOW ((FIT_TIME_ZONE)14) -#define FIT_TIME_ZONE_MUSCAT ((FIT_TIME_ZONE)15) -#define FIT_TIME_ZONE_NEWFOUNDLAND ((FIT_TIME_ZONE)16) -#define FIT_TIME_ZONE_SAMOA ((FIT_TIME_ZONE)17) -#define FIT_TIME_ZONE_SYDNEY ((FIT_TIME_ZONE)18) -#define FIT_TIME_ZONE_TEHRAN ((FIT_TIME_ZONE)19) -#define FIT_TIME_ZONE_TOKYO ((FIT_TIME_ZONE)20) -#define FIT_TIME_ZONE_US_ALASKA ((FIT_TIME_ZONE)21) -#define FIT_TIME_ZONE_US_ATLANTIC ((FIT_TIME_ZONE)22) -#define FIT_TIME_ZONE_US_CENTRAL ((FIT_TIME_ZONE)23) -#define FIT_TIME_ZONE_US_EASTERN ((FIT_TIME_ZONE)24) -#define FIT_TIME_ZONE_US_HAWAII ((FIT_TIME_ZONE)25) -#define FIT_TIME_ZONE_US_MOUNTAIN ((FIT_TIME_ZONE)26) -#define FIT_TIME_ZONE_US_PACIFIC ((FIT_TIME_ZONE)27) -#define FIT_TIME_ZONE_OTHER ((FIT_TIME_ZONE)28) -#define FIT_TIME_ZONE_AUCKLAND ((FIT_TIME_ZONE)29) -#define FIT_TIME_ZONE_KATHMANDU ((FIT_TIME_ZONE)30) -#define FIT_TIME_ZONE_EUROPE_WESTERN_WET ((FIT_TIME_ZONE)31) -#define FIT_TIME_ZONE_EUROPE_CENTRAL_CET ((FIT_TIME_ZONE)32) -#define FIT_TIME_ZONE_EUROPE_EASTERN_EET ((FIT_TIME_ZONE)33) -#define FIT_TIME_ZONE_JAKARTA ((FIT_TIME_ZONE)34) -#define FIT_TIME_ZONE_PERTH ((FIT_TIME_ZONE)35) -#define FIT_TIME_ZONE_ADELAIDE ((FIT_TIME_ZONE)36) -#define FIT_TIME_ZONE_BRISBANE ((FIT_TIME_ZONE)37) -#define FIT_TIME_ZONE_TASMANIA ((FIT_TIME_ZONE)38) -#define FIT_TIME_ZONE_ICELAND ((FIT_TIME_ZONE)39) -#define FIT_TIME_ZONE_AMSTERDAM ((FIT_TIME_ZONE)40) -#define FIT_TIME_ZONE_ATHENS ((FIT_TIME_ZONE)41) -#define FIT_TIME_ZONE_BARCELONA ((FIT_TIME_ZONE)42) -#define FIT_TIME_ZONE_BERLIN ((FIT_TIME_ZONE)43) -#define FIT_TIME_ZONE_BRUSSELS ((FIT_TIME_ZONE)44) -#define FIT_TIME_ZONE_BUDAPEST ((FIT_TIME_ZONE)45) -#define FIT_TIME_ZONE_COPENHAGEN ((FIT_TIME_ZONE)46) -#define FIT_TIME_ZONE_DUBLIN ((FIT_TIME_ZONE)47) -#define FIT_TIME_ZONE_HELSINKI ((FIT_TIME_ZONE)48) -#define FIT_TIME_ZONE_LISBON ((FIT_TIME_ZONE)49) -#define FIT_TIME_ZONE_LONDON ((FIT_TIME_ZONE)50) -#define FIT_TIME_ZONE_MADRID ((FIT_TIME_ZONE)51) -#define FIT_TIME_ZONE_MUNICH ((FIT_TIME_ZONE)52) -#define FIT_TIME_ZONE_OSLO ((FIT_TIME_ZONE)53) -#define FIT_TIME_ZONE_PARIS ((FIT_TIME_ZONE)54) -#define FIT_TIME_ZONE_PRAGUE ((FIT_TIME_ZONE)55) -#define FIT_TIME_ZONE_REYKJAVIK ((FIT_TIME_ZONE)56) -#define FIT_TIME_ZONE_ROME ((FIT_TIME_ZONE)57) -#define FIT_TIME_ZONE_STOCKHOLM ((FIT_TIME_ZONE)58) -#define FIT_TIME_ZONE_VIENNA ((FIT_TIME_ZONE)59) -#define FIT_TIME_ZONE_WARSAW ((FIT_TIME_ZONE)60) -#define FIT_TIME_ZONE_ZURICH ((FIT_TIME_ZONE)61) -#define FIT_TIME_ZONE_QUEBEC ((FIT_TIME_ZONE)62) -#define FIT_TIME_ZONE_ONTARIO ((FIT_TIME_ZONE)63) -#define FIT_TIME_ZONE_MANITOBA ((FIT_TIME_ZONE)64) -#define FIT_TIME_ZONE_SASKATCHEWAN ((FIT_TIME_ZONE)65) -#define FIT_TIME_ZONE_ALBERTA ((FIT_TIME_ZONE)66) -#define FIT_TIME_ZONE_BRITISH_COLUMBIA ((FIT_TIME_ZONE)67) -#define FIT_TIME_ZONE_BOISE ((FIT_TIME_ZONE)68) -#define FIT_TIME_ZONE_BOSTON ((FIT_TIME_ZONE)69) -#define FIT_TIME_ZONE_CHICAGO ((FIT_TIME_ZONE)70) -#define FIT_TIME_ZONE_DALLAS ((FIT_TIME_ZONE)71) -#define FIT_TIME_ZONE_DENVER ((FIT_TIME_ZONE)72) -#define FIT_TIME_ZONE_KANSAS_CITY ((FIT_TIME_ZONE)73) -#define FIT_TIME_ZONE_LAS_VEGAS ((FIT_TIME_ZONE)74) -#define FIT_TIME_ZONE_LOS_ANGELES ((FIT_TIME_ZONE)75) -#define FIT_TIME_ZONE_MIAMI ((FIT_TIME_ZONE)76) -#define FIT_TIME_ZONE_MINNEAPOLIS ((FIT_TIME_ZONE)77) -#define FIT_TIME_ZONE_NEW_YORK ((FIT_TIME_ZONE)78) -#define FIT_TIME_ZONE_NEW_ORLEANS ((FIT_TIME_ZONE)79) -#define FIT_TIME_ZONE_PHOENIX ((FIT_TIME_ZONE)80) -#define FIT_TIME_ZONE_SANTA_FE ((FIT_TIME_ZONE)81) -#define FIT_TIME_ZONE_SEATTLE ((FIT_TIME_ZONE)82) -#define FIT_TIME_ZONE_WASHINGTON_DC ((FIT_TIME_ZONE)83) -#define FIT_TIME_ZONE_US_ARIZONA ((FIT_TIME_ZONE)84) -#define FIT_TIME_ZONE_CHITA ((FIT_TIME_ZONE)85) -#define FIT_TIME_ZONE_EKATERINBURG ((FIT_TIME_ZONE)86) -#define FIT_TIME_ZONE_IRKUTSK ((FIT_TIME_ZONE)87) -#define FIT_TIME_ZONE_KALININGRAD ((FIT_TIME_ZONE)88) -#define FIT_TIME_ZONE_KRASNOYARSK ((FIT_TIME_ZONE)89) -#define FIT_TIME_ZONE_NOVOSIBIRSK ((FIT_TIME_ZONE)90) -#define FIT_TIME_ZONE_PETROPAVLOVSK_KAMCHATSKIY ((FIT_TIME_ZONE)91) -#define FIT_TIME_ZONE_SAMARA ((FIT_TIME_ZONE)92) -#define FIT_TIME_ZONE_VLADIVOSTOK ((FIT_TIME_ZONE)93) -#define FIT_TIME_ZONE_MEXICO_CENTRAL ((FIT_TIME_ZONE)94) -#define FIT_TIME_ZONE_MEXICO_MOUNTAIN ((FIT_TIME_ZONE)95) -#define FIT_TIME_ZONE_MEXICO_PACIFIC ((FIT_TIME_ZONE)96) -#define FIT_TIME_ZONE_CAPE_TOWN ((FIT_TIME_ZONE)97) -#define FIT_TIME_ZONE_WINKHOEK ((FIT_TIME_ZONE)98) -#define FIT_TIME_ZONE_LAGOS ((FIT_TIME_ZONE)99) -#define FIT_TIME_ZONE_RIYAHD ((FIT_TIME_ZONE)100) -#define FIT_TIME_ZONE_VENEZUELA ((FIT_TIME_ZONE)101) -#define FIT_TIME_ZONE_AUSTRALIA_LH ((FIT_TIME_ZONE)102) -#define FIT_TIME_ZONE_SANTIAGO ((FIT_TIME_ZONE)103) -#define FIT_TIME_ZONE_MANUAL ((FIT_TIME_ZONE)253) -#define FIT_TIME_ZONE_AUTOMATIC ((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_DISPLAY_MEASURE)0) -#define FIT_DISPLAY_MEASURE_STATUTE ((FIT_DISPLAY_MEASURE)1) -#define FIT_DISPLAY_MEASURE_NAUTICAL ((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_DISPLAY_HEART)0) -#define FIT_DISPLAY_HEART_MAX ((FIT_DISPLAY_HEART)1) -#define FIT_DISPLAY_HEART_RESERVE ((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_DISPLAY_POWER)0) -#define FIT_DISPLAY_POWER_PERCENT_FTP ((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_DISPLAY_POSITION)0) // dd.dddddd -#define FIT_DISPLAY_POSITION_DEGREE_MINUTE ((FIT_DISPLAY_POSITION)1) // dddmm.mmm -#define FIT_DISPLAY_POSITION_DEGREE_MINUTE_SECOND ((FIT_DISPLAY_POSITION)2) // dddmmss -#define FIT_DISPLAY_POSITION_AUSTRIAN_GRID ((FIT_DISPLAY_POSITION)3) // Austrian Grid (BMN) -#define FIT_DISPLAY_POSITION_BRITISH_GRID ((FIT_DISPLAY_POSITION)4) // British National Grid -#define FIT_DISPLAY_POSITION_DUTCH_GRID ((FIT_DISPLAY_POSITION)5) // Dutch grid system -#define FIT_DISPLAY_POSITION_HUNGARIAN_GRID ((FIT_DISPLAY_POSITION)6) // Hungarian grid system -#define FIT_DISPLAY_POSITION_FINNISH_GRID ((FIT_DISPLAY_POSITION)7) // Finnish grid system Zone3 KKJ27 -#define FIT_DISPLAY_POSITION_GERMAN_GRID ((FIT_DISPLAY_POSITION)8) // Gausss Krueger (German) -#define FIT_DISPLAY_POSITION_ICELANDIC_GRID ((FIT_DISPLAY_POSITION)9) // Icelandic Grid -#define FIT_DISPLAY_POSITION_INDONESIAN_EQUATORIAL ((FIT_DISPLAY_POSITION)10) // Indonesian Equatorial LCO -#define FIT_DISPLAY_POSITION_INDONESIAN_IRIAN ((FIT_DISPLAY_POSITION)11) // Indonesian Irian LCO -#define FIT_DISPLAY_POSITION_INDONESIAN_SOUTHERN ((FIT_DISPLAY_POSITION)12) // Indonesian Southern LCO -#define FIT_DISPLAY_POSITION_INDIA_ZONE_0 ((FIT_DISPLAY_POSITION)13) // India zone 0 -#define FIT_DISPLAY_POSITION_INDIA_ZONE_IA ((FIT_DISPLAY_POSITION)14) // India zone IA -#define FIT_DISPLAY_POSITION_INDIA_ZONE_IB ((FIT_DISPLAY_POSITION)15) // India zone IB -#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIA ((FIT_DISPLAY_POSITION)16) // India zone IIA -#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIB ((FIT_DISPLAY_POSITION)17) // India zone IIB -#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIIA ((FIT_DISPLAY_POSITION)18) // India zone IIIA -#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIIB ((FIT_DISPLAY_POSITION)19) // India zone IIIB -#define FIT_DISPLAY_POSITION_INDIA_ZONE_IVA ((FIT_DISPLAY_POSITION)20) // India zone IVA -#define FIT_DISPLAY_POSITION_INDIA_ZONE_IVB ((FIT_DISPLAY_POSITION)21) // India zone IVB -#define FIT_DISPLAY_POSITION_IRISH_TRANSVERSE ((FIT_DISPLAY_POSITION)22) // Irish Transverse Mercator -#define FIT_DISPLAY_POSITION_IRISH_GRID ((FIT_DISPLAY_POSITION)23) // Irish Grid -#define FIT_DISPLAY_POSITION_LORAN ((FIT_DISPLAY_POSITION)24) // Loran TD -#define FIT_DISPLAY_POSITION_MAIDENHEAD_GRID ((FIT_DISPLAY_POSITION)25) // Maidenhead grid system -#define FIT_DISPLAY_POSITION_MGRS_GRID ((FIT_DISPLAY_POSITION)26) // MGRS grid system -#define FIT_DISPLAY_POSITION_NEW_ZEALAND_GRID ((FIT_DISPLAY_POSITION)27) // New Zealand grid system -#define FIT_DISPLAY_POSITION_NEW_ZEALAND_TRANSVERSE ((FIT_DISPLAY_POSITION)28) // New Zealand Transverse Mercator -#define FIT_DISPLAY_POSITION_QATAR_GRID ((FIT_DISPLAY_POSITION)29) // Qatar National Grid -#define FIT_DISPLAY_POSITION_MODIFIED_SWEDISH_GRID ((FIT_DISPLAY_POSITION)30) // Modified RT-90 (Sweden) -#define FIT_DISPLAY_POSITION_SWEDISH_GRID ((FIT_DISPLAY_POSITION)31) // RT-90 (Sweden) -#define FIT_DISPLAY_POSITION_SOUTH_AFRICAN_GRID ((FIT_DISPLAY_POSITION)32) // South African Grid -#define FIT_DISPLAY_POSITION_SWISS_GRID ((FIT_DISPLAY_POSITION)33) // Swiss CH-1903 grid -#define FIT_DISPLAY_POSITION_TAIWAN_GRID ((FIT_DISPLAY_POSITION)34) // Taiwan Grid -#define FIT_DISPLAY_POSITION_UNITED_STATES_GRID ((FIT_DISPLAY_POSITION)35) // United States National Grid -#define FIT_DISPLAY_POSITION_UTM_UPS_GRID ((FIT_DISPLAY_POSITION)36) // UTM/UPS grid system -#define FIT_DISPLAY_POSITION_WEST_MALAYAN ((FIT_DISPLAY_POSITION)37) // West Malayan RSO -#define FIT_DISPLAY_POSITION_BORNEO_RSO ((FIT_DISPLAY_POSITION)38) // Borneo RSO -#define FIT_DISPLAY_POSITION_ESTONIAN_GRID ((FIT_DISPLAY_POSITION)39) // Estonian grid system -#define FIT_DISPLAY_POSITION_LATVIAN_GRID ((FIT_DISPLAY_POSITION)40) // Latvian Transverse Mercator -#define FIT_DISPLAY_POSITION_SWEDISH_REF_99_GRID ((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_SWITCH)0) -#define FIT_SWITCH_ON ((FIT_SWITCH)1) -#define FIT_SWITCH_AUTO ((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_SPORT)0) -#define FIT_SPORT_RUNNING ((FIT_SPORT)1) -#define FIT_SPORT_CYCLING ((FIT_SPORT)2) -#define FIT_SPORT_TRANSITION ((FIT_SPORT)3) // Mulitsport transition -#define FIT_SPORT_FITNESS_EQUIPMENT ((FIT_SPORT)4) -#define FIT_SPORT_SWIMMING ((FIT_SPORT)5) -#define FIT_SPORT_BASKETBALL ((FIT_SPORT)6) -#define FIT_SPORT_SOCCER ((FIT_SPORT)7) -#define FIT_SPORT_TENNIS ((FIT_SPORT)8) -#define FIT_SPORT_AMERICAN_FOOTBALL ((FIT_SPORT)9) -#define FIT_SPORT_TRAINING ((FIT_SPORT)10) -#define FIT_SPORT_WALKING ((FIT_SPORT)11) -#define FIT_SPORT_CROSS_COUNTRY_SKIING ((FIT_SPORT)12) -#define FIT_SPORT_ALPINE_SKIING ((FIT_SPORT)13) -#define FIT_SPORT_SNOWBOARDING ((FIT_SPORT)14) -#define FIT_SPORT_ROWING ((FIT_SPORT)15) -#define FIT_SPORT_MOUNTAINEERING ((FIT_SPORT)16) -#define FIT_SPORT_HIKING ((FIT_SPORT)17) -#define FIT_SPORT_MULTISPORT ((FIT_SPORT)18) -#define FIT_SPORT_PADDLING ((FIT_SPORT)19) -#define FIT_SPORT_FLYING ((FIT_SPORT)20) -#define FIT_SPORT_E_BIKING ((FIT_SPORT)21) -#define FIT_SPORT_MOTORCYCLING ((FIT_SPORT)22) -#define FIT_SPORT_BOATING ((FIT_SPORT)23) -#define FIT_SPORT_DRIVING ((FIT_SPORT)24) -#define FIT_SPORT_GOLF ((FIT_SPORT)25) -#define FIT_SPORT_HANG_GLIDING ((FIT_SPORT)26) -#define FIT_SPORT_HORSEBACK_RIDING ((FIT_SPORT)27) -#define FIT_SPORT_HUNTING ((FIT_SPORT)28) -#define FIT_SPORT_FISHING ((FIT_SPORT)29) -#define FIT_SPORT_INLINE_SKATING ((FIT_SPORT)30) -#define FIT_SPORT_ROCK_CLIMBING ((FIT_SPORT)31) -#define FIT_SPORT_SAILING ((FIT_SPORT)32) -#define FIT_SPORT_ICE_SKATING ((FIT_SPORT)33) -#define FIT_SPORT_SKY_DIVING ((FIT_SPORT)34) -#define FIT_SPORT_SNOWSHOEING ((FIT_SPORT)35) -#define FIT_SPORT_SNOWMOBILING ((FIT_SPORT)36) -#define FIT_SPORT_STAND_UP_PADDLEBOARDING ((FIT_SPORT)37) -#define FIT_SPORT_SURFING ((FIT_SPORT)38) -#define FIT_SPORT_WAKEBOARDING ((FIT_SPORT)39) -#define FIT_SPORT_WATER_SKIING ((FIT_SPORT)40) -#define FIT_SPORT_KAYAKING ((FIT_SPORT)41) -#define FIT_SPORT_RAFTING ((FIT_SPORT)42) -#define FIT_SPORT_WINDSURFING ((FIT_SPORT)43) -#define FIT_SPORT_KITESURFING ((FIT_SPORT)44) -#define FIT_SPORT_TACTICAL ((FIT_SPORT)45) -#define FIT_SPORT_JUMPMASTER ((FIT_SPORT)46) -#define FIT_SPORT_BOXING ((FIT_SPORT)47) -#define FIT_SPORT_FLOOR_CLIMBING ((FIT_SPORT)48) +//////////////////////////////////////////////////////////////////////////////// +// The following FIT Protocol software provided may be used with FIT protocol +// devices only and remains the copyrighted property of Garmin Canada Inc. +// The software is being provided on an "as-is" basis and as an accommodation, +// and therefore all warranties, representations, or guarantees of any kind +// (whether express, implied or statutory) including, without limitation, +// warranties of merchantability, non-infringement, or fitness for a particular +// purpose, are specifically disclaimed. +// +// Copyright 2020 Garmin Canada Inc. +//////////////////////////////////////////////////////////////////////////////// +// ****WARNING**** This file is auto-generated! Do NOT edit this file. +// Profile Version = 21.40Release +// Tag = production/akw/21.40.00-0-g813c158 +// 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_FILE)1) // Read only, single file. Must be in root directory. +#define FIT_FILE_SETTINGS ((FIT_FILE)2) // Read/write, single file. Directory=Settings +#define FIT_FILE_SPORT ((FIT_FILE)3) // Read/write, multiple files, file number = sport type. Directory=Sports +#define FIT_FILE_ACTIVITY ((FIT_FILE)4) // Read/erase, multiple files. Directory=Activities +#define FIT_FILE_WORKOUT ((FIT_FILE)5) // Read/write/erase, multiple files. Directory=Workouts +#define FIT_FILE_COURSE ((FIT_FILE)6) // Read/write/erase, multiple files. Directory=Courses +#define FIT_FILE_SCHEDULES ((FIT_FILE)7) // Read/write, single file. Directory=Schedules +#define FIT_FILE_WEIGHT ((FIT_FILE)9) // Read only, single file. Circular buffer. All message definitions at start of file. Directory=Weight +#define FIT_FILE_TOTALS ((FIT_FILE)10) // Read only, single file. Directory=Totals +#define FIT_FILE_GOALS ((FIT_FILE)11) // Read/write, single file. Directory=Goals +#define FIT_FILE_BLOOD_PRESSURE ((FIT_FILE)14) // Read only. Directory=Blood Pressure +#define FIT_FILE_MONITORING_A ((FIT_FILE)15) // Read only. Directory=Monitoring. File number=sub type. +#define FIT_FILE_ACTIVITY_SUMMARY ((FIT_FILE)20) // Read/erase, multiple files. Directory=Activities +#define FIT_FILE_MONITORING_DAILY ((FIT_FILE)28) +#define FIT_FILE_MONITORING_B ((FIT_FILE)32) // Read only. Directory=Monitoring. File number=identifier +#define FIT_FILE_SEGMENT ((FIT_FILE)34) // Read/write/erase. Multiple Files. Directory=Segments +#define FIT_FILE_SEGMENT_LIST ((FIT_FILE)35) // Read/write/erase. Single File. Directory=Segments +#define FIT_FILE_EXD_CONFIGURATION ((FIT_FILE)40) // Read/write/erase. Single File. Directory=Settings +#define FIT_FILE_MFG_RANGE_MIN ((FIT_FILE)0xF7) // 0xF7 - 0xFE reserved for manufacturer specific file types +#define FIT_FILE_MFG_RANGE_MAX ((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_MESG_NUM)0) +#define FIT_MESG_NUM_CAPABILITIES ((FIT_MESG_NUM)1) +#define FIT_MESG_NUM_DEVICE_SETTINGS ((FIT_MESG_NUM)2) +#define FIT_MESG_NUM_USER_PROFILE ((FIT_MESG_NUM)3) +#define FIT_MESG_NUM_HRM_PROFILE ((FIT_MESG_NUM)4) +#define FIT_MESG_NUM_SDM_PROFILE ((FIT_MESG_NUM)5) +#define FIT_MESG_NUM_BIKE_PROFILE ((FIT_MESG_NUM)6) +#define FIT_MESG_NUM_ZONES_TARGET ((FIT_MESG_NUM)7) +#define FIT_MESG_NUM_HR_ZONE ((FIT_MESG_NUM)8) +#define FIT_MESG_NUM_POWER_ZONE ((FIT_MESG_NUM)9) +#define FIT_MESG_NUM_MET_ZONE ((FIT_MESG_NUM)10) +#define FIT_MESG_NUM_SPORT ((FIT_MESG_NUM)12) +#define FIT_MESG_NUM_GOAL ((FIT_MESG_NUM)15) +#define FIT_MESG_NUM_SESSION ((FIT_MESG_NUM)18) +#define FIT_MESG_NUM_LAP ((FIT_MESG_NUM)19) +#define FIT_MESG_NUM_RECORD ((FIT_MESG_NUM)20) +#define FIT_MESG_NUM_EVENT ((FIT_MESG_NUM)21) +#define FIT_MESG_NUM_DEVICE_INFO ((FIT_MESG_NUM)23) +#define FIT_MESG_NUM_WORKOUT ((FIT_MESG_NUM)26) +#define FIT_MESG_NUM_WORKOUT_STEP ((FIT_MESG_NUM)27) +#define FIT_MESG_NUM_SCHEDULE ((FIT_MESG_NUM)28) +#define FIT_MESG_NUM_WEIGHT_SCALE ((FIT_MESG_NUM)30) +#define FIT_MESG_NUM_COURSE ((FIT_MESG_NUM)31) +#define FIT_MESG_NUM_COURSE_POINT ((FIT_MESG_NUM)32) +#define FIT_MESG_NUM_TOTALS ((FIT_MESG_NUM)33) +#define FIT_MESG_NUM_ACTIVITY ((FIT_MESG_NUM)34) +#define FIT_MESG_NUM_SOFTWARE ((FIT_MESG_NUM)35) +#define FIT_MESG_NUM_FILE_CAPABILITIES ((FIT_MESG_NUM)37) +#define FIT_MESG_NUM_MESG_CAPABILITIES ((FIT_MESG_NUM)38) +#define FIT_MESG_NUM_FIELD_CAPABILITIES ((FIT_MESG_NUM)39) +#define FIT_MESG_NUM_FILE_CREATOR ((FIT_MESG_NUM)49) +#define FIT_MESG_NUM_BLOOD_PRESSURE ((FIT_MESG_NUM)51) +#define FIT_MESG_NUM_SPEED_ZONE ((FIT_MESG_NUM)53) +#define FIT_MESG_NUM_MONITORING ((FIT_MESG_NUM)55) +#define FIT_MESG_NUM_TRAINING_FILE ((FIT_MESG_NUM)72) +#define FIT_MESG_NUM_HRV ((FIT_MESG_NUM)78) +#define FIT_MESG_NUM_ANT_RX ((FIT_MESG_NUM)80) +#define FIT_MESG_NUM_ANT_TX ((FIT_MESG_NUM)81) +#define FIT_MESG_NUM_ANT_CHANNEL_ID ((FIT_MESG_NUM)82) +#define FIT_MESG_NUM_LENGTH ((FIT_MESG_NUM)101) +#define FIT_MESG_NUM_MONITORING_INFO ((FIT_MESG_NUM)103) +#define FIT_MESG_NUM_PAD ((FIT_MESG_NUM)105) +#define FIT_MESG_NUM_SLAVE_DEVICE ((FIT_MESG_NUM)106) +#define FIT_MESG_NUM_CONNECTIVITY ((FIT_MESG_NUM)127) +#define FIT_MESG_NUM_WEATHER_CONDITIONS ((FIT_MESG_NUM)128) +#define FIT_MESG_NUM_WEATHER_ALERT ((FIT_MESG_NUM)129) +#define FIT_MESG_NUM_CADENCE_ZONE ((FIT_MESG_NUM)131) +#define FIT_MESG_NUM_HR ((FIT_MESG_NUM)132) +#define FIT_MESG_NUM_SEGMENT_LAP ((FIT_MESG_NUM)142) +#define FIT_MESG_NUM_MEMO_GLOB ((FIT_MESG_NUM)145) +#define FIT_MESG_NUM_SEGMENT_ID ((FIT_MESG_NUM)148) +#define FIT_MESG_NUM_SEGMENT_LEADERBOARD_ENTRY ((FIT_MESG_NUM)149) +#define FIT_MESG_NUM_SEGMENT_POINT ((FIT_MESG_NUM)150) +#define FIT_MESG_NUM_SEGMENT_FILE ((FIT_MESG_NUM)151) +#define FIT_MESG_NUM_WORKOUT_SESSION ((FIT_MESG_NUM)158) +#define FIT_MESG_NUM_WATCHFACE_SETTINGS ((FIT_MESG_NUM)159) +#define FIT_MESG_NUM_GPS_METADATA ((FIT_MESG_NUM)160) +#define FIT_MESG_NUM_CAMERA_EVENT ((FIT_MESG_NUM)161) +#define FIT_MESG_NUM_TIMESTAMP_CORRELATION ((FIT_MESG_NUM)162) +#define FIT_MESG_NUM_GYROSCOPE_DATA ((FIT_MESG_NUM)164) +#define FIT_MESG_NUM_ACCELEROMETER_DATA ((FIT_MESG_NUM)165) +#define FIT_MESG_NUM_THREE_D_SENSOR_CALIBRATION ((FIT_MESG_NUM)167) +#define FIT_MESG_NUM_VIDEO_FRAME ((FIT_MESG_NUM)169) +#define FIT_MESG_NUM_OBDII_DATA ((FIT_MESG_NUM)174) +#define FIT_MESG_NUM_NMEA_SENTENCE ((FIT_MESG_NUM)177) +#define FIT_MESG_NUM_AVIATION_ATTITUDE ((FIT_MESG_NUM)178) +#define FIT_MESG_NUM_VIDEO ((FIT_MESG_NUM)184) +#define FIT_MESG_NUM_VIDEO_TITLE ((FIT_MESG_NUM)185) +#define FIT_MESG_NUM_VIDEO_DESCRIPTION ((FIT_MESG_NUM)186) +#define FIT_MESG_NUM_VIDEO_CLIP ((FIT_MESG_NUM)187) +#define FIT_MESG_NUM_OHR_SETTINGS ((FIT_MESG_NUM)188) +#define FIT_MESG_NUM_EXD_SCREEN_CONFIGURATION ((FIT_MESG_NUM)200) +#define FIT_MESG_NUM_EXD_DATA_FIELD_CONFIGURATION ((FIT_MESG_NUM)201) +#define FIT_MESG_NUM_EXD_DATA_CONCEPT_CONFIGURATION ((FIT_MESG_NUM)202) +#define FIT_MESG_NUM_FIELD_DESCRIPTION ((FIT_MESG_NUM)206) +#define FIT_MESG_NUM_DEVELOPER_DATA_ID ((FIT_MESG_NUM)207) +#define FIT_MESG_NUM_MAGNETOMETER_DATA ((FIT_MESG_NUM)208) +#define FIT_MESG_NUM_BAROMETER_DATA ((FIT_MESG_NUM)209) +#define FIT_MESG_NUM_ONE_D_SENSOR_CALIBRATION ((FIT_MESG_NUM)210) +#define FIT_MESG_NUM_SET ((FIT_MESG_NUM)225) +#define FIT_MESG_NUM_STRESS_LEVEL ((FIT_MESG_NUM)227) +#define FIT_MESG_NUM_DIVE_SETTINGS ((FIT_MESG_NUM)258) +#define FIT_MESG_NUM_DIVE_GAS ((FIT_MESG_NUM)259) +#define FIT_MESG_NUM_DIVE_ALARM ((FIT_MESG_NUM)262) +#define FIT_MESG_NUM_EXERCISE_TITLE ((FIT_MESG_NUM)264) +#define FIT_MESG_NUM_DIVE_SUMMARY ((FIT_MESG_NUM)268) +#define FIT_MESG_NUM_JUMP ((FIT_MESG_NUM)285) +#define FIT_MESG_NUM_CLIMB_PRO ((FIT_MESG_NUM)317) +#define FIT_MESG_NUM_MFG_RANGE_MIN ((FIT_MESG_NUM)0xFF00) // 0xFF00 - 0xFFFE reserved for manufacturer specific messages +#define FIT_MESG_NUM_MFG_RANGE_MAX ((FIT_MESG_NUM)0xFFFE) // 0xFF00 - 0xFFFE reserved for manufacturer specific messages +#define FIT_MESG_NUM_COUNT 90 + +typedef FIT_UINT8 FIT_CHECKSUM; +#define FIT_CHECKSUM_INVALID FIT_UINT8_INVALID +#define FIT_CHECKSUM_CLEAR ((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_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_FILE_FLAGS)0x02) +#define FIT_FILE_FLAGS_WRITE ((FIT_FILE_FLAGS)0x04) +#define FIT_FILE_FLAGS_ERASE ((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_MESG_COUNT)0) +#define FIT_MESG_COUNT_MAX_PER_FILE ((FIT_MESG_COUNT)1) +#define FIT_MESG_COUNT_MAX_PER_FILE_TYPE ((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_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_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_MESSAGE_INDEX)0x8000) // message is selected if set +#define FIT_MESSAGE_INDEX_RESERVED ((FIT_MESSAGE_INDEX)0x7000) // reserved (default 0) +#define FIT_MESSAGE_INDEX_MASK ((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_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_GENDER)0) +#define FIT_GENDER_MALE ((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_LANGUAGE)0) +#define FIT_LANGUAGE_FRENCH ((FIT_LANGUAGE)1) +#define FIT_LANGUAGE_ITALIAN ((FIT_LANGUAGE)2) +#define FIT_LANGUAGE_GERMAN ((FIT_LANGUAGE)3) +#define FIT_LANGUAGE_SPANISH ((FIT_LANGUAGE)4) +#define FIT_LANGUAGE_CROATIAN ((FIT_LANGUAGE)5) +#define FIT_LANGUAGE_CZECH ((FIT_LANGUAGE)6) +#define FIT_LANGUAGE_DANISH ((FIT_LANGUAGE)7) +#define FIT_LANGUAGE_DUTCH ((FIT_LANGUAGE)8) +#define FIT_LANGUAGE_FINNISH ((FIT_LANGUAGE)9) +#define FIT_LANGUAGE_GREEK ((FIT_LANGUAGE)10) +#define FIT_LANGUAGE_HUNGARIAN ((FIT_LANGUAGE)11) +#define FIT_LANGUAGE_NORWEGIAN ((FIT_LANGUAGE)12) +#define FIT_LANGUAGE_POLISH ((FIT_LANGUAGE)13) +#define FIT_LANGUAGE_PORTUGUESE ((FIT_LANGUAGE)14) +#define FIT_LANGUAGE_SLOVAKIAN ((FIT_LANGUAGE)15) +#define FIT_LANGUAGE_SLOVENIAN ((FIT_LANGUAGE)16) +#define FIT_LANGUAGE_SWEDISH ((FIT_LANGUAGE)17) +#define FIT_LANGUAGE_RUSSIAN ((FIT_LANGUAGE)18) +#define FIT_LANGUAGE_TURKISH ((FIT_LANGUAGE)19) +#define FIT_LANGUAGE_LATVIAN ((FIT_LANGUAGE)20) +#define FIT_LANGUAGE_UKRAINIAN ((FIT_LANGUAGE)21) +#define FIT_LANGUAGE_ARABIC ((FIT_LANGUAGE)22) +#define FIT_LANGUAGE_FARSI ((FIT_LANGUAGE)23) +#define FIT_LANGUAGE_BULGARIAN ((FIT_LANGUAGE)24) +#define FIT_LANGUAGE_ROMANIAN ((FIT_LANGUAGE)25) +#define FIT_LANGUAGE_CHINESE ((FIT_LANGUAGE)26) +#define FIT_LANGUAGE_JAPANESE ((FIT_LANGUAGE)27) +#define FIT_LANGUAGE_KOREAN ((FIT_LANGUAGE)28) +#define FIT_LANGUAGE_TAIWANESE ((FIT_LANGUAGE)29) +#define FIT_LANGUAGE_THAI ((FIT_LANGUAGE)30) +#define FIT_LANGUAGE_HEBREW ((FIT_LANGUAGE)31) +#define FIT_LANGUAGE_BRAZILIAN_PORTUGUESE ((FIT_LANGUAGE)32) +#define FIT_LANGUAGE_INDONESIAN ((FIT_LANGUAGE)33) +#define FIT_LANGUAGE_MALAYSIAN ((FIT_LANGUAGE)34) +#define FIT_LANGUAGE_VIETNAMESE ((FIT_LANGUAGE)35) +#define FIT_LANGUAGE_BURMESE ((FIT_LANGUAGE)36) +#define FIT_LANGUAGE_MONGOLIAN ((FIT_LANGUAGE)37) +#define FIT_LANGUAGE_CUSTOM ((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_LANGUAGE_BITS_0)0x01) +#define FIT_LANGUAGE_BITS_0_FRENCH ((FIT_LANGUAGE_BITS_0)0x02) +#define FIT_LANGUAGE_BITS_0_ITALIAN ((FIT_LANGUAGE_BITS_0)0x04) +#define FIT_LANGUAGE_BITS_0_GERMAN ((FIT_LANGUAGE_BITS_0)0x08) +#define FIT_LANGUAGE_BITS_0_SPANISH ((FIT_LANGUAGE_BITS_0)0x10) +#define FIT_LANGUAGE_BITS_0_CROATIAN ((FIT_LANGUAGE_BITS_0)0x20) +#define FIT_LANGUAGE_BITS_0_CZECH ((FIT_LANGUAGE_BITS_0)0x40) +#define FIT_LANGUAGE_BITS_0_DANISH ((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_LANGUAGE_BITS_1)0x01) +#define FIT_LANGUAGE_BITS_1_FINNISH ((FIT_LANGUAGE_BITS_1)0x02) +#define FIT_LANGUAGE_BITS_1_GREEK ((FIT_LANGUAGE_BITS_1)0x04) +#define FIT_LANGUAGE_BITS_1_HUNGARIAN ((FIT_LANGUAGE_BITS_1)0x08) +#define FIT_LANGUAGE_BITS_1_NORWEGIAN ((FIT_LANGUAGE_BITS_1)0x10) +#define FIT_LANGUAGE_BITS_1_POLISH ((FIT_LANGUAGE_BITS_1)0x20) +#define FIT_LANGUAGE_BITS_1_PORTUGUESE ((FIT_LANGUAGE_BITS_1)0x40) +#define FIT_LANGUAGE_BITS_1_SLOVAKIAN ((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_LANGUAGE_BITS_2)0x01) +#define FIT_LANGUAGE_BITS_2_SWEDISH ((FIT_LANGUAGE_BITS_2)0x02) +#define FIT_LANGUAGE_BITS_2_RUSSIAN ((FIT_LANGUAGE_BITS_2)0x04) +#define FIT_LANGUAGE_BITS_2_TURKISH ((FIT_LANGUAGE_BITS_2)0x08) +#define FIT_LANGUAGE_BITS_2_LATVIAN ((FIT_LANGUAGE_BITS_2)0x10) +#define FIT_LANGUAGE_BITS_2_UKRAINIAN ((FIT_LANGUAGE_BITS_2)0x20) +#define FIT_LANGUAGE_BITS_2_ARABIC ((FIT_LANGUAGE_BITS_2)0x40) +#define FIT_LANGUAGE_BITS_2_FARSI ((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_LANGUAGE_BITS_3)0x01) +#define FIT_LANGUAGE_BITS_3_ROMANIAN ((FIT_LANGUAGE_BITS_3)0x02) +#define FIT_LANGUAGE_BITS_3_CHINESE ((FIT_LANGUAGE_BITS_3)0x04) +#define FIT_LANGUAGE_BITS_3_JAPANESE ((FIT_LANGUAGE_BITS_3)0x08) +#define FIT_LANGUAGE_BITS_3_KOREAN ((FIT_LANGUAGE_BITS_3)0x10) +#define FIT_LANGUAGE_BITS_3_TAIWANESE ((FIT_LANGUAGE_BITS_3)0x20) +#define FIT_LANGUAGE_BITS_3_THAI ((FIT_LANGUAGE_BITS_3)0x40) +#define FIT_LANGUAGE_BITS_3_HEBREW ((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_LANGUAGE_BITS_4)0x01) +#define FIT_LANGUAGE_BITS_4_INDONESIAN ((FIT_LANGUAGE_BITS_4)0x02) +#define FIT_LANGUAGE_BITS_4_MALAYSIAN ((FIT_LANGUAGE_BITS_4)0x04) +#define FIT_LANGUAGE_BITS_4_VIETNAMESE ((FIT_LANGUAGE_BITS_4)0x08) +#define FIT_LANGUAGE_BITS_4_BURMESE ((FIT_LANGUAGE_BITS_4)0x10) +#define FIT_LANGUAGE_BITS_4_MONGOLIAN ((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_TIME_ZONE)0) +#define FIT_TIME_ZONE_BANGKOK ((FIT_TIME_ZONE)1) +#define FIT_TIME_ZONE_BOMBAY ((FIT_TIME_ZONE)2) +#define FIT_TIME_ZONE_BRASILIA ((FIT_TIME_ZONE)3) +#define FIT_TIME_ZONE_CAIRO ((FIT_TIME_ZONE)4) +#define FIT_TIME_ZONE_CAPE_VERDE_IS ((FIT_TIME_ZONE)5) +#define FIT_TIME_ZONE_DARWIN ((FIT_TIME_ZONE)6) +#define FIT_TIME_ZONE_ENIWETOK ((FIT_TIME_ZONE)7) +#define FIT_TIME_ZONE_FIJI ((FIT_TIME_ZONE)8) +#define FIT_TIME_ZONE_HONG_KONG ((FIT_TIME_ZONE)9) +#define FIT_TIME_ZONE_ISLAMABAD ((FIT_TIME_ZONE)10) +#define FIT_TIME_ZONE_KABUL ((FIT_TIME_ZONE)11) +#define FIT_TIME_ZONE_MAGADAN ((FIT_TIME_ZONE)12) +#define FIT_TIME_ZONE_MID_ATLANTIC ((FIT_TIME_ZONE)13) +#define FIT_TIME_ZONE_MOSCOW ((FIT_TIME_ZONE)14) +#define FIT_TIME_ZONE_MUSCAT ((FIT_TIME_ZONE)15) +#define FIT_TIME_ZONE_NEWFOUNDLAND ((FIT_TIME_ZONE)16) +#define FIT_TIME_ZONE_SAMOA ((FIT_TIME_ZONE)17) +#define FIT_TIME_ZONE_SYDNEY ((FIT_TIME_ZONE)18) +#define FIT_TIME_ZONE_TEHRAN ((FIT_TIME_ZONE)19) +#define FIT_TIME_ZONE_TOKYO ((FIT_TIME_ZONE)20) +#define FIT_TIME_ZONE_US_ALASKA ((FIT_TIME_ZONE)21) +#define FIT_TIME_ZONE_US_ATLANTIC ((FIT_TIME_ZONE)22) +#define FIT_TIME_ZONE_US_CENTRAL ((FIT_TIME_ZONE)23) +#define FIT_TIME_ZONE_US_EASTERN ((FIT_TIME_ZONE)24) +#define FIT_TIME_ZONE_US_HAWAII ((FIT_TIME_ZONE)25) +#define FIT_TIME_ZONE_US_MOUNTAIN ((FIT_TIME_ZONE)26) +#define FIT_TIME_ZONE_US_PACIFIC ((FIT_TIME_ZONE)27) +#define FIT_TIME_ZONE_OTHER ((FIT_TIME_ZONE)28) +#define FIT_TIME_ZONE_AUCKLAND ((FIT_TIME_ZONE)29) +#define FIT_TIME_ZONE_KATHMANDU ((FIT_TIME_ZONE)30) +#define FIT_TIME_ZONE_EUROPE_WESTERN_WET ((FIT_TIME_ZONE)31) +#define FIT_TIME_ZONE_EUROPE_CENTRAL_CET ((FIT_TIME_ZONE)32) +#define FIT_TIME_ZONE_EUROPE_EASTERN_EET ((FIT_TIME_ZONE)33) +#define FIT_TIME_ZONE_JAKARTA ((FIT_TIME_ZONE)34) +#define FIT_TIME_ZONE_PERTH ((FIT_TIME_ZONE)35) +#define FIT_TIME_ZONE_ADELAIDE ((FIT_TIME_ZONE)36) +#define FIT_TIME_ZONE_BRISBANE ((FIT_TIME_ZONE)37) +#define FIT_TIME_ZONE_TASMANIA ((FIT_TIME_ZONE)38) +#define FIT_TIME_ZONE_ICELAND ((FIT_TIME_ZONE)39) +#define FIT_TIME_ZONE_AMSTERDAM ((FIT_TIME_ZONE)40) +#define FIT_TIME_ZONE_ATHENS ((FIT_TIME_ZONE)41) +#define FIT_TIME_ZONE_BARCELONA ((FIT_TIME_ZONE)42) +#define FIT_TIME_ZONE_BERLIN ((FIT_TIME_ZONE)43) +#define FIT_TIME_ZONE_BRUSSELS ((FIT_TIME_ZONE)44) +#define FIT_TIME_ZONE_BUDAPEST ((FIT_TIME_ZONE)45) +#define FIT_TIME_ZONE_COPENHAGEN ((FIT_TIME_ZONE)46) +#define FIT_TIME_ZONE_DUBLIN ((FIT_TIME_ZONE)47) +#define FIT_TIME_ZONE_HELSINKI ((FIT_TIME_ZONE)48) +#define FIT_TIME_ZONE_LISBON ((FIT_TIME_ZONE)49) +#define FIT_TIME_ZONE_LONDON ((FIT_TIME_ZONE)50) +#define FIT_TIME_ZONE_MADRID ((FIT_TIME_ZONE)51) +#define FIT_TIME_ZONE_MUNICH ((FIT_TIME_ZONE)52) +#define FIT_TIME_ZONE_OSLO ((FIT_TIME_ZONE)53) +#define FIT_TIME_ZONE_PARIS ((FIT_TIME_ZONE)54) +#define FIT_TIME_ZONE_PRAGUE ((FIT_TIME_ZONE)55) +#define FIT_TIME_ZONE_REYKJAVIK ((FIT_TIME_ZONE)56) +#define FIT_TIME_ZONE_ROME ((FIT_TIME_ZONE)57) +#define FIT_TIME_ZONE_STOCKHOLM ((FIT_TIME_ZONE)58) +#define FIT_TIME_ZONE_VIENNA ((FIT_TIME_ZONE)59) +#define FIT_TIME_ZONE_WARSAW ((FIT_TIME_ZONE)60) +#define FIT_TIME_ZONE_ZURICH ((FIT_TIME_ZONE)61) +#define FIT_TIME_ZONE_QUEBEC ((FIT_TIME_ZONE)62) +#define FIT_TIME_ZONE_ONTARIO ((FIT_TIME_ZONE)63) +#define FIT_TIME_ZONE_MANITOBA ((FIT_TIME_ZONE)64) +#define FIT_TIME_ZONE_SASKATCHEWAN ((FIT_TIME_ZONE)65) +#define FIT_TIME_ZONE_ALBERTA ((FIT_TIME_ZONE)66) +#define FIT_TIME_ZONE_BRITISH_COLUMBIA ((FIT_TIME_ZONE)67) +#define FIT_TIME_ZONE_BOISE ((FIT_TIME_ZONE)68) +#define FIT_TIME_ZONE_BOSTON ((FIT_TIME_ZONE)69) +#define FIT_TIME_ZONE_CHICAGO ((FIT_TIME_ZONE)70) +#define FIT_TIME_ZONE_DALLAS ((FIT_TIME_ZONE)71) +#define FIT_TIME_ZONE_DENVER ((FIT_TIME_ZONE)72) +#define FIT_TIME_ZONE_KANSAS_CITY ((FIT_TIME_ZONE)73) +#define FIT_TIME_ZONE_LAS_VEGAS ((FIT_TIME_ZONE)74) +#define FIT_TIME_ZONE_LOS_ANGELES ((FIT_TIME_ZONE)75) +#define FIT_TIME_ZONE_MIAMI ((FIT_TIME_ZONE)76) +#define FIT_TIME_ZONE_MINNEAPOLIS ((FIT_TIME_ZONE)77) +#define FIT_TIME_ZONE_NEW_YORK ((FIT_TIME_ZONE)78) +#define FIT_TIME_ZONE_NEW_ORLEANS ((FIT_TIME_ZONE)79) +#define FIT_TIME_ZONE_PHOENIX ((FIT_TIME_ZONE)80) +#define FIT_TIME_ZONE_SANTA_FE ((FIT_TIME_ZONE)81) +#define FIT_TIME_ZONE_SEATTLE ((FIT_TIME_ZONE)82) +#define FIT_TIME_ZONE_WASHINGTON_DC ((FIT_TIME_ZONE)83) +#define FIT_TIME_ZONE_US_ARIZONA ((FIT_TIME_ZONE)84) +#define FIT_TIME_ZONE_CHITA ((FIT_TIME_ZONE)85) +#define FIT_TIME_ZONE_EKATERINBURG ((FIT_TIME_ZONE)86) +#define FIT_TIME_ZONE_IRKUTSK ((FIT_TIME_ZONE)87) +#define FIT_TIME_ZONE_KALININGRAD ((FIT_TIME_ZONE)88) +#define FIT_TIME_ZONE_KRASNOYARSK ((FIT_TIME_ZONE)89) +#define FIT_TIME_ZONE_NOVOSIBIRSK ((FIT_TIME_ZONE)90) +#define FIT_TIME_ZONE_PETROPAVLOVSK_KAMCHATSKIY ((FIT_TIME_ZONE)91) +#define FIT_TIME_ZONE_SAMARA ((FIT_TIME_ZONE)92) +#define FIT_TIME_ZONE_VLADIVOSTOK ((FIT_TIME_ZONE)93) +#define FIT_TIME_ZONE_MEXICO_CENTRAL ((FIT_TIME_ZONE)94) +#define FIT_TIME_ZONE_MEXICO_MOUNTAIN ((FIT_TIME_ZONE)95) +#define FIT_TIME_ZONE_MEXICO_PACIFIC ((FIT_TIME_ZONE)96) +#define FIT_TIME_ZONE_CAPE_TOWN ((FIT_TIME_ZONE)97) +#define FIT_TIME_ZONE_WINKHOEK ((FIT_TIME_ZONE)98) +#define FIT_TIME_ZONE_LAGOS ((FIT_TIME_ZONE)99) +#define FIT_TIME_ZONE_RIYAHD ((FIT_TIME_ZONE)100) +#define FIT_TIME_ZONE_VENEZUELA ((FIT_TIME_ZONE)101) +#define FIT_TIME_ZONE_AUSTRALIA_LH ((FIT_TIME_ZONE)102) +#define FIT_TIME_ZONE_SANTIAGO ((FIT_TIME_ZONE)103) +#define FIT_TIME_ZONE_MANUAL ((FIT_TIME_ZONE)253) +#define FIT_TIME_ZONE_AUTOMATIC ((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_DISPLAY_MEASURE)0) +#define FIT_DISPLAY_MEASURE_STATUTE ((FIT_DISPLAY_MEASURE)1) +#define FIT_DISPLAY_MEASURE_NAUTICAL ((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_DISPLAY_HEART)0) +#define FIT_DISPLAY_HEART_MAX ((FIT_DISPLAY_HEART)1) +#define FIT_DISPLAY_HEART_RESERVE ((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_DISPLAY_POWER)0) +#define FIT_DISPLAY_POWER_PERCENT_FTP ((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_DISPLAY_POSITION)0) // dd.dddddd +#define FIT_DISPLAY_POSITION_DEGREE_MINUTE ((FIT_DISPLAY_POSITION)1) // dddmm.mmm +#define FIT_DISPLAY_POSITION_DEGREE_MINUTE_SECOND ((FIT_DISPLAY_POSITION)2) // dddmmss +#define FIT_DISPLAY_POSITION_AUSTRIAN_GRID ((FIT_DISPLAY_POSITION)3) // Austrian Grid (BMN) +#define FIT_DISPLAY_POSITION_BRITISH_GRID ((FIT_DISPLAY_POSITION)4) // British National Grid +#define FIT_DISPLAY_POSITION_DUTCH_GRID ((FIT_DISPLAY_POSITION)5) // Dutch grid system +#define FIT_DISPLAY_POSITION_HUNGARIAN_GRID ((FIT_DISPLAY_POSITION)6) // Hungarian grid system +#define FIT_DISPLAY_POSITION_FINNISH_GRID ((FIT_DISPLAY_POSITION)7) // Finnish grid system Zone3 KKJ27 +#define FIT_DISPLAY_POSITION_GERMAN_GRID ((FIT_DISPLAY_POSITION)8) // Gausss Krueger (German) +#define FIT_DISPLAY_POSITION_ICELANDIC_GRID ((FIT_DISPLAY_POSITION)9) // Icelandic Grid +#define FIT_DISPLAY_POSITION_INDONESIAN_EQUATORIAL ((FIT_DISPLAY_POSITION)10) // Indonesian Equatorial LCO +#define FIT_DISPLAY_POSITION_INDONESIAN_IRIAN ((FIT_DISPLAY_POSITION)11) // Indonesian Irian LCO +#define FIT_DISPLAY_POSITION_INDONESIAN_SOUTHERN ((FIT_DISPLAY_POSITION)12) // Indonesian Southern LCO +#define FIT_DISPLAY_POSITION_INDIA_ZONE_0 ((FIT_DISPLAY_POSITION)13) // India zone 0 +#define FIT_DISPLAY_POSITION_INDIA_ZONE_IA ((FIT_DISPLAY_POSITION)14) // India zone IA +#define FIT_DISPLAY_POSITION_INDIA_ZONE_IB ((FIT_DISPLAY_POSITION)15) // India zone IB +#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIA ((FIT_DISPLAY_POSITION)16) // India zone IIA +#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIB ((FIT_DISPLAY_POSITION)17) // India zone IIB +#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIIA ((FIT_DISPLAY_POSITION)18) // India zone IIIA +#define FIT_DISPLAY_POSITION_INDIA_ZONE_IIIB ((FIT_DISPLAY_POSITION)19) // India zone IIIB +#define FIT_DISPLAY_POSITION_INDIA_ZONE_IVA ((FIT_DISPLAY_POSITION)20) // India zone IVA +#define FIT_DISPLAY_POSITION_INDIA_ZONE_IVB ((FIT_DISPLAY_POSITION)21) // India zone IVB +#define FIT_DISPLAY_POSITION_IRISH_TRANSVERSE ((FIT_DISPLAY_POSITION)22) // Irish Transverse Mercator +#define FIT_DISPLAY_POSITION_IRISH_GRID ((FIT_DISPLAY_POSITION)23) // Irish Grid +#define FIT_DISPLAY_POSITION_LORAN ((FIT_DISPLAY_POSITION)24) // Loran TD +#define FIT_DISPLAY_POSITION_MAIDENHEAD_GRID ((FIT_DISPLAY_POSITION)25) // Maidenhead grid system +#define FIT_DISPLAY_POSITION_MGRS_GRID ((FIT_DISPLAY_POSITION)26) // MGRS grid system +#define FIT_DISPLAY_POSITION_NEW_ZEALAND_GRID ((FIT_DISPLAY_POSITION)27) // New Zealand grid system +#define FIT_DISPLAY_POSITION_NEW_ZEALAND_TRANSVERSE ((FIT_DISPLAY_POSITION)28) // New Zealand Transverse Mercator +#define FIT_DISPLAY_POSITION_QATAR_GRID ((FIT_DISPLAY_POSITION)29) // Qatar National Grid +#define FIT_DISPLAY_POSITION_MODIFIED_SWEDISH_GRID ((FIT_DISPLAY_POSITION)30) // Modified RT-90 (Sweden) +#define FIT_DISPLAY_POSITION_SWEDISH_GRID ((FIT_DISPLAY_POSITION)31) // RT-90 (Sweden) +#define FIT_DISPLAY_POSITION_SOUTH_AFRICAN_GRID ((FIT_DISPLAY_POSITION)32) // South African Grid +#define FIT_DISPLAY_POSITION_SWISS_GRID ((FIT_DISPLAY_POSITION)33) // Swiss CH-1903 grid +#define FIT_DISPLAY_POSITION_TAIWAN_GRID ((FIT_DISPLAY_POSITION)34) // Taiwan Grid +#define FIT_DISPLAY_POSITION_UNITED_STATES_GRID ((FIT_DISPLAY_POSITION)35) // United States National Grid +#define FIT_DISPLAY_POSITION_UTM_UPS_GRID ((FIT_DISPLAY_POSITION)36) // UTM/UPS grid system +#define FIT_DISPLAY_POSITION_WEST_MALAYAN ((FIT_DISPLAY_POSITION)37) // West Malayan RSO +#define FIT_DISPLAY_POSITION_BORNEO_RSO ((FIT_DISPLAY_POSITION)38) // Borneo RSO +#define FIT_DISPLAY_POSITION_ESTONIAN_GRID ((FIT_DISPLAY_POSITION)39) // Estonian grid system +#define FIT_DISPLAY_POSITION_LATVIAN_GRID ((FIT_DISPLAY_POSITION)40) // Latvian Transverse Mercator +#define FIT_DISPLAY_POSITION_SWEDISH_REF_99_GRID ((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_SWITCH)0) +#define FIT_SWITCH_ON ((FIT_SWITCH)1) +#define FIT_SWITCH_AUTO ((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_SPORT)0) +#define FIT_SPORT_RUNNING ((FIT_SPORT)1) +#define FIT_SPORT_CYCLING ((FIT_SPORT)2) +#define FIT_SPORT_TRANSITION ((FIT_SPORT)3) // Mulitsport transition +#define FIT_SPORT_FITNESS_EQUIPMENT ((FIT_SPORT)4) +#define FIT_SPORT_SWIMMING ((FIT_SPORT)5) +#define FIT_SPORT_BASKETBALL ((FIT_SPORT)6) +#define FIT_SPORT_SOCCER ((FIT_SPORT)7) +#define FIT_SPORT_TENNIS ((FIT_SPORT)8) +#define FIT_SPORT_AMERICAN_FOOTBALL ((FIT_SPORT)9) +#define FIT_SPORT_TRAINING ((FIT_SPORT)10) +#define FIT_SPORT_WALKING ((FIT_SPORT)11) +#define FIT_SPORT_CROSS_COUNTRY_SKIING ((FIT_SPORT)12) +#define FIT_SPORT_ALPINE_SKIING ((FIT_SPORT)13) +#define FIT_SPORT_SNOWBOARDING ((FIT_SPORT)14) +#define FIT_SPORT_ROWING ((FIT_SPORT)15) +#define FIT_SPORT_MOUNTAINEERING ((FIT_SPORT)16) +#define FIT_SPORT_HIKING ((FIT_SPORT)17) +#define FIT_SPORT_MULTISPORT ((FIT_SPORT)18) +#define FIT_SPORT_PADDLING ((FIT_SPORT)19) +#define FIT_SPORT_FLYING ((FIT_SPORT)20) +#define FIT_SPORT_E_BIKING ((FIT_SPORT)21) +#define FIT_SPORT_MOTORCYCLING ((FIT_SPORT)22) +#define FIT_SPORT_BOATING ((FIT_SPORT)23) +#define FIT_SPORT_DRIVING ((FIT_SPORT)24) +#define FIT_SPORT_GOLF ((FIT_SPORT)25) +#define FIT_SPORT_HANG_GLIDING ((FIT_SPORT)26) +#define FIT_SPORT_HORSEBACK_RIDING ((FIT_SPORT)27) +#define FIT_SPORT_HUNTING ((FIT_SPORT)28) +#define FIT_SPORT_FISHING ((FIT_SPORT)29) +#define FIT_SPORT_INLINE_SKATING ((FIT_SPORT)30) +#define FIT_SPORT_ROCK_CLIMBING ((FIT_SPORT)31) +#define FIT_SPORT_SAILING ((FIT_SPORT)32) +#define FIT_SPORT_ICE_SKATING ((FIT_SPORT)33) +#define FIT_SPORT_SKY_DIVING ((FIT_SPORT)34) +#define FIT_SPORT_SNOWSHOEING ((FIT_SPORT)35) +#define FIT_SPORT_SNOWMOBILING ((FIT_SPORT)36) +#define FIT_SPORT_STAND_UP_PADDLEBOARDING ((FIT_SPORT)37) +#define FIT_SPORT_SURFING ((FIT_SPORT)38) +#define FIT_SPORT_WAKEBOARDING ((FIT_SPORT)39) +#define FIT_SPORT_WATER_SKIING ((FIT_SPORT)40) +#define FIT_SPORT_KAYAKING ((FIT_SPORT)41) +#define FIT_SPORT_RAFTING ((FIT_SPORT)42) +#define FIT_SPORT_WINDSURFING ((FIT_SPORT)43) +#define FIT_SPORT_KITESURFING ((FIT_SPORT)44) +#define FIT_SPORT_TACTICAL ((FIT_SPORT)45) +#define FIT_SPORT_JUMPMASTER ((FIT_SPORT)46) +#define FIT_SPORT_BOXING ((FIT_SPORT)47) +#define FIT_SPORT_FLOOR_CLIMBING ((FIT_SPORT)48) #define FIT_SPORT_DIVING ((FIT_SPORT)53) -#define FIT_SPORT_ALL ((FIT_SPORT)254) // All is for goals only to include all sports. +#define FIT_SPORT_ALL ((FIT_SPORT)254) // All is for goals only to include all sports. #define FIT_SPORT_COUNT 51 - -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_SPORT_BITS_0)0x01) -#define FIT_SPORT_BITS_0_RUNNING ((FIT_SPORT_BITS_0)0x02) -#define FIT_SPORT_BITS_0_CYCLING ((FIT_SPORT_BITS_0)0x04) -#define FIT_SPORT_BITS_0_TRANSITION ((FIT_SPORT_BITS_0)0x08) // Mulitsport transition -#define FIT_SPORT_BITS_0_FITNESS_EQUIPMENT ((FIT_SPORT_BITS_0)0x10) -#define FIT_SPORT_BITS_0_SWIMMING ((FIT_SPORT_BITS_0)0x20) -#define FIT_SPORT_BITS_0_BASKETBALL ((FIT_SPORT_BITS_0)0x40) -#define FIT_SPORT_BITS_0_SOCCER ((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_SPORT_BITS_1)0x01) -#define FIT_SPORT_BITS_1_AMERICAN_FOOTBALL ((FIT_SPORT_BITS_1)0x02) -#define FIT_SPORT_BITS_1_TRAINING ((FIT_SPORT_BITS_1)0x04) -#define FIT_SPORT_BITS_1_WALKING ((FIT_SPORT_BITS_1)0x08) -#define FIT_SPORT_BITS_1_CROSS_COUNTRY_SKIING ((FIT_SPORT_BITS_1)0x10) -#define FIT_SPORT_BITS_1_ALPINE_SKIING ((FIT_SPORT_BITS_1)0x20) -#define FIT_SPORT_BITS_1_SNOWBOARDING ((FIT_SPORT_BITS_1)0x40) -#define FIT_SPORT_BITS_1_ROWING ((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_SPORT_BITS_2)0x01) -#define FIT_SPORT_BITS_2_HIKING ((FIT_SPORT_BITS_2)0x02) -#define FIT_SPORT_BITS_2_MULTISPORT ((FIT_SPORT_BITS_2)0x04) -#define FIT_SPORT_BITS_2_PADDLING ((FIT_SPORT_BITS_2)0x08) -#define FIT_SPORT_BITS_2_FLYING ((FIT_SPORT_BITS_2)0x10) -#define FIT_SPORT_BITS_2_E_BIKING ((FIT_SPORT_BITS_2)0x20) -#define FIT_SPORT_BITS_2_MOTORCYCLING ((FIT_SPORT_BITS_2)0x40) -#define FIT_SPORT_BITS_2_BOATING ((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_SPORT_BITS_3)0x01) -#define FIT_SPORT_BITS_3_GOLF ((FIT_SPORT_BITS_3)0x02) -#define FIT_SPORT_BITS_3_HANG_GLIDING ((FIT_SPORT_BITS_3)0x04) -#define FIT_SPORT_BITS_3_HORSEBACK_RIDING ((FIT_SPORT_BITS_3)0x08) -#define FIT_SPORT_BITS_3_HUNTING ((FIT_SPORT_BITS_3)0x10) -#define FIT_SPORT_BITS_3_FISHING ((FIT_SPORT_BITS_3)0x20) -#define FIT_SPORT_BITS_3_INLINE_SKATING ((FIT_SPORT_BITS_3)0x40) -#define FIT_SPORT_BITS_3_ROCK_CLIMBING ((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_SPORT_BITS_4)0x01) -#define FIT_SPORT_BITS_4_ICE_SKATING ((FIT_SPORT_BITS_4)0x02) -#define FIT_SPORT_BITS_4_SKY_DIVING ((FIT_SPORT_BITS_4)0x04) -#define FIT_SPORT_BITS_4_SNOWSHOEING ((FIT_SPORT_BITS_4)0x08) -#define FIT_SPORT_BITS_4_SNOWMOBILING ((FIT_SPORT_BITS_4)0x10) -#define FIT_SPORT_BITS_4_STAND_UP_PADDLEBOARDING ((FIT_SPORT_BITS_4)0x20) -#define FIT_SPORT_BITS_4_SURFING ((FIT_SPORT_BITS_4)0x40) -#define FIT_SPORT_BITS_4_WAKEBOARDING ((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_SPORT_BITS_5)0x01) -#define FIT_SPORT_BITS_5_KAYAKING ((FIT_SPORT_BITS_5)0x02) -#define FIT_SPORT_BITS_5_RAFTING ((FIT_SPORT_BITS_5)0x04) -#define FIT_SPORT_BITS_5_WINDSURFING ((FIT_SPORT_BITS_5)0x08) -#define FIT_SPORT_BITS_5_KITESURFING ((FIT_SPORT_BITS_5)0x10) -#define FIT_SPORT_BITS_5_TACTICAL ((FIT_SPORT_BITS_5)0x20) -#define FIT_SPORT_BITS_5_JUMPMASTER ((FIT_SPORT_BITS_5)0x40) -#define FIT_SPORT_BITS_5_BOXING ((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_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_SUB_SPORT)0) -#define FIT_SUB_SPORT_TREADMILL ((FIT_SUB_SPORT)1) // Run/Fitness Equipment -#define FIT_SUB_SPORT_STREET ((FIT_SUB_SPORT)2) // Run -#define FIT_SUB_SPORT_TRAIL ((FIT_SUB_SPORT)3) // Run -#define FIT_SUB_SPORT_TRACK ((FIT_SUB_SPORT)4) // Run -#define FIT_SUB_SPORT_SPIN ((FIT_SUB_SPORT)5) // Cycling -#define FIT_SUB_SPORT_INDOOR_CYCLING ((FIT_SUB_SPORT)6) // Cycling/Fitness Equipment -#define FIT_SUB_SPORT_ROAD ((FIT_SUB_SPORT)7) // Cycling -#define FIT_SUB_SPORT_MOUNTAIN ((FIT_SUB_SPORT)8) // Cycling -#define FIT_SUB_SPORT_DOWNHILL ((FIT_SUB_SPORT)9) // Cycling -#define FIT_SUB_SPORT_RECUMBENT ((FIT_SUB_SPORT)10) // Cycling -#define FIT_SUB_SPORT_CYCLOCROSS ((FIT_SUB_SPORT)11) // Cycling -#define FIT_SUB_SPORT_HAND_CYCLING ((FIT_SUB_SPORT)12) // Cycling -#define FIT_SUB_SPORT_TRACK_CYCLING ((FIT_SUB_SPORT)13) // Cycling -#define FIT_SUB_SPORT_INDOOR_ROWING ((FIT_SUB_SPORT)14) // Fitness Equipment -#define FIT_SUB_SPORT_ELLIPTICAL ((FIT_SUB_SPORT)15) // Fitness Equipment -#define FIT_SUB_SPORT_STAIR_CLIMBING ((FIT_SUB_SPORT)16) // Fitness Equipment -#define FIT_SUB_SPORT_LAP_SWIMMING ((FIT_SUB_SPORT)17) // Swimming -#define FIT_SUB_SPORT_OPEN_WATER ((FIT_SUB_SPORT)18) // Swimming -#define FIT_SUB_SPORT_FLEXIBILITY_TRAINING ((FIT_SUB_SPORT)19) // Training -#define FIT_SUB_SPORT_STRENGTH_TRAINING ((FIT_SUB_SPORT)20) // Training -#define FIT_SUB_SPORT_WARM_UP ((FIT_SUB_SPORT)21) // Tennis -#define FIT_SUB_SPORT_MATCH ((FIT_SUB_SPORT)22) // Tennis -#define FIT_SUB_SPORT_EXERCISE ((FIT_SUB_SPORT)23) // Tennis -#define FIT_SUB_SPORT_CHALLENGE ((FIT_SUB_SPORT)24) -#define FIT_SUB_SPORT_INDOOR_SKIING ((FIT_SUB_SPORT)25) // Fitness Equipment -#define FIT_SUB_SPORT_CARDIO_TRAINING ((FIT_SUB_SPORT)26) // Training -#define FIT_SUB_SPORT_INDOOR_WALKING ((FIT_SUB_SPORT)27) // Walking/Fitness Equipment -#define FIT_SUB_SPORT_E_BIKE_FITNESS ((FIT_SUB_SPORT)28) // E-Biking -#define FIT_SUB_SPORT_BMX ((FIT_SUB_SPORT)29) // Cycling -#define FIT_SUB_SPORT_CASUAL_WALKING ((FIT_SUB_SPORT)30) // Walking -#define FIT_SUB_SPORT_SPEED_WALKING ((FIT_SUB_SPORT)31) // Walking -#define FIT_SUB_SPORT_BIKE_TO_RUN_TRANSITION ((FIT_SUB_SPORT)32) // Transition -#define FIT_SUB_SPORT_RUN_TO_BIKE_TRANSITION ((FIT_SUB_SPORT)33) // Transition -#define FIT_SUB_SPORT_SWIM_TO_BIKE_TRANSITION ((FIT_SUB_SPORT)34) // Transition -#define FIT_SUB_SPORT_ATV ((FIT_SUB_SPORT)35) // Motorcycling -#define FIT_SUB_SPORT_MOTOCROSS ((FIT_SUB_SPORT)36) // Motorcycling -#define FIT_SUB_SPORT_BACKCOUNTRY ((FIT_SUB_SPORT)37) // Alpine Skiing/Snowboarding -#define FIT_SUB_SPORT_RESORT ((FIT_SUB_SPORT)38) // Alpine Skiing/Snowboarding -#define FIT_SUB_SPORT_RC_DRONE ((FIT_SUB_SPORT)39) // Flying -#define FIT_SUB_SPORT_WINGSUIT ((FIT_SUB_SPORT)40) // Flying -#define FIT_SUB_SPORT_WHITEWATER ((FIT_SUB_SPORT)41) // Kayaking/Rafting -#define FIT_SUB_SPORT_SKATE_SKIING ((FIT_SUB_SPORT)42) // Cross Country Skiing -#define FIT_SUB_SPORT_YOGA ((FIT_SUB_SPORT)43) // Training -#define FIT_SUB_SPORT_PILATES ((FIT_SUB_SPORT)44) // Fitness Equipment -#define FIT_SUB_SPORT_INDOOR_RUNNING ((FIT_SUB_SPORT)45) // Run -#define FIT_SUB_SPORT_GRAVEL_CYCLING ((FIT_SUB_SPORT)46) // Cycling -#define FIT_SUB_SPORT_E_BIKE_MOUNTAIN ((FIT_SUB_SPORT)47) // Cycling -#define FIT_SUB_SPORT_COMMUTING ((FIT_SUB_SPORT)48) // Cycling -#define FIT_SUB_SPORT_MIXED_SURFACE ((FIT_SUB_SPORT)49) // Cycling -#define FIT_SUB_SPORT_NAVIGATE ((FIT_SUB_SPORT)50) -#define FIT_SUB_SPORT_TRACK_ME ((FIT_SUB_SPORT)51) -#define FIT_SUB_SPORT_MAP ((FIT_SUB_SPORT)52) -#define FIT_SUB_SPORT_SINGLE_GAS_DIVING ((FIT_SUB_SPORT)53) // Diving -#define FIT_SUB_SPORT_MULTI_GAS_DIVING ((FIT_SUB_SPORT)54) // Diving -#define FIT_SUB_SPORT_GAUGE_DIVING ((FIT_SUB_SPORT)55) // Diving -#define FIT_SUB_SPORT_APNEA_DIVING ((FIT_SUB_SPORT)56) // Diving -#define FIT_SUB_SPORT_APNEA_HUNTING ((FIT_SUB_SPORT)57) // Diving -#define FIT_SUB_SPORT_VIRTUAL_ACTIVITY ((FIT_SUB_SPORT)58) -#define FIT_SUB_SPORT_OBSTACLE ((FIT_SUB_SPORT)59) // Used for events where participants run, crawl through mud, climb over walls, etc. -#define FIT_SUB_SPORT_ALL ((FIT_SUB_SPORT)254) -#define FIT_SUB_SPORT_COUNT 61 - -typedef FIT_ENUM FIT_SPORT_EVENT; -#define FIT_SPORT_EVENT_INVALID FIT_ENUM_INVALID -#define FIT_SPORT_EVENT_UNCATEGORIZED ((FIT_SPORT_EVENT)0) -#define FIT_SPORT_EVENT_GEOCACHING ((FIT_SPORT_EVENT)1) -#define FIT_SPORT_EVENT_FITNESS ((FIT_SPORT_EVENT)2) -#define FIT_SPORT_EVENT_RECREATION ((FIT_SPORT_EVENT)3) -#define FIT_SPORT_EVENT_RACE ((FIT_SPORT_EVENT)4) -#define FIT_SPORT_EVENT_SPECIAL_EVENT ((FIT_SPORT_EVENT)5) -#define FIT_SPORT_EVENT_TRAINING ((FIT_SPORT_EVENT)6) -#define FIT_SPORT_EVENT_TRANSPORTATION ((FIT_SPORT_EVENT)7) -#define FIT_SPORT_EVENT_TOURING ((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_ACTIVITY)0) -#define FIT_ACTIVITY_AUTO_MULTI_SPORT ((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_INTENSITY)0) -#define FIT_INTENSITY_REST ((FIT_INTENSITY)1) -#define FIT_INTENSITY_WARMUP ((FIT_INTENSITY)2) -#define FIT_INTENSITY_COOLDOWN ((FIT_INTENSITY)3) -#define FIT_INTENSITY_COUNT 4 - -typedef FIT_ENUM FIT_SESSION_TRIGGER; -#define FIT_SESSION_TRIGGER_INVALID FIT_ENUM_INVALID -#define FIT_SESSION_TRIGGER_ACTIVITY_END ((FIT_SESSION_TRIGGER)0) -#define FIT_SESSION_TRIGGER_MANUAL ((FIT_SESSION_TRIGGER)1) // User changed sport. -#define FIT_SESSION_TRIGGER_AUTO_MULTI_SPORT ((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_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_AUTOLAP_TRIGGER)0) -#define FIT_AUTOLAP_TRIGGER_DISTANCE ((FIT_AUTOLAP_TRIGGER)1) -#define FIT_AUTOLAP_TRIGGER_POSITION_START ((FIT_AUTOLAP_TRIGGER)2) -#define FIT_AUTOLAP_TRIGGER_POSITION_LAP ((FIT_AUTOLAP_TRIGGER)3) -#define FIT_AUTOLAP_TRIGGER_POSITION_WAYPOINT ((FIT_AUTOLAP_TRIGGER)4) -#define FIT_AUTOLAP_TRIGGER_POSITION_MARKED ((FIT_AUTOLAP_TRIGGER)5) -#define FIT_AUTOLAP_TRIGGER_OFF ((FIT_AUTOLAP_TRIGGER)6) -#define FIT_AUTOLAP_TRIGGER_COUNT 7 - -typedef FIT_ENUM FIT_LAP_TRIGGER; -#define FIT_LAP_TRIGGER_INVALID FIT_ENUM_INVALID -#define FIT_LAP_TRIGGER_MANUAL ((FIT_LAP_TRIGGER)0) -#define FIT_LAP_TRIGGER_TIME ((FIT_LAP_TRIGGER)1) -#define FIT_LAP_TRIGGER_DISTANCE ((FIT_LAP_TRIGGER)2) -#define FIT_LAP_TRIGGER_POSITION_START ((FIT_LAP_TRIGGER)3) -#define FIT_LAP_TRIGGER_POSITION_LAP ((FIT_LAP_TRIGGER)4) -#define FIT_LAP_TRIGGER_POSITION_WAYPOINT ((FIT_LAP_TRIGGER)5) -#define FIT_LAP_TRIGGER_POSITION_MARKED ((FIT_LAP_TRIGGER)6) -#define FIT_LAP_TRIGGER_SESSION_END ((FIT_LAP_TRIGGER)7) -#define FIT_LAP_TRIGGER_FITNESS_EQUIPMENT ((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_TIME_MODE)0) -#define FIT_TIME_MODE_HOUR24 ((FIT_TIME_MODE)1) // Does not use a leading zero and has a colon -#define FIT_TIME_MODE_MILITARY ((FIT_TIME_MODE)2) // Uses a leading zero and does not have a colon -#define FIT_TIME_MODE_HOUR_12_WITH_SECONDS ((FIT_TIME_MODE)3) -#define FIT_TIME_MODE_HOUR_24_WITH_SECONDS ((FIT_TIME_MODE)4) -#define FIT_TIME_MODE_UTC ((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_BACKLIGHT_MODE)0) -#define FIT_BACKLIGHT_MODE_MANUAL ((FIT_BACKLIGHT_MODE)1) -#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES ((FIT_BACKLIGHT_MODE)2) -#define FIT_BACKLIGHT_MODE_AUTO_BRIGHTNESS ((FIT_BACKLIGHT_MODE)3) -#define FIT_BACKLIGHT_MODE_SMART_NOTIFICATIONS ((FIT_BACKLIGHT_MODE)4) -#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES_NIGHT ((FIT_BACKLIGHT_MODE)5) -#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES_AND_SMART_NOTIFICATIONS ((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_DATE_MODE)0) -#define FIT_DATE_MODE_MONTH_DAY ((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_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_EVENT)0) // Group 0. Start / stop_all -#define FIT_EVENT_WORKOUT ((FIT_EVENT)3) // start / stop -#define FIT_EVENT_WORKOUT_STEP ((FIT_EVENT)4) // Start at beginning of workout. Stop at end of each step. -#define FIT_EVENT_POWER_DOWN ((FIT_EVENT)5) // stop_all group 0 -#define FIT_EVENT_POWER_UP ((FIT_EVENT)6) // stop_all group 0 -#define FIT_EVENT_OFF_COURSE ((FIT_EVENT)7) // start / stop group 0 -#define FIT_EVENT_SESSION ((FIT_EVENT)8) // Stop at end of each session. -#define FIT_EVENT_LAP ((FIT_EVENT)9) // Stop at end of each lap. -#define FIT_EVENT_COURSE_POINT ((FIT_EVENT)10) // marker -#define FIT_EVENT_BATTERY ((FIT_EVENT)11) // marker -#define FIT_EVENT_VIRTUAL_PARTNER_PACE ((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_EVENT)13) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_HR_LOW_ALERT ((FIT_EVENT)14) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_SPEED_HIGH_ALERT ((FIT_EVENT)15) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_SPEED_LOW_ALERT ((FIT_EVENT)16) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_CAD_HIGH_ALERT ((FIT_EVENT)17) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_CAD_LOW_ALERT ((FIT_EVENT)18) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_POWER_HIGH_ALERT ((FIT_EVENT)19) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_POWER_LOW_ALERT ((FIT_EVENT)20) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_RECOVERY_HR ((FIT_EVENT)21) // marker -#define FIT_EVENT_BATTERY_LOW ((FIT_EVENT)22) // marker -#define FIT_EVENT_TIME_DURATION_ALERT ((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_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_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_EVENT)26) // Group 1.. Stop at end of activity. -#define FIT_EVENT_FITNESS_EQUIPMENT ((FIT_EVENT)27) // marker -#define FIT_EVENT_LENGTH ((FIT_EVENT)28) // Stop at end of each length. -#define FIT_EVENT_USER_MARKER ((FIT_EVENT)32) // marker -#define FIT_EVENT_SPORT_POINT ((FIT_EVENT)33) // marker -#define FIT_EVENT_CALIBRATION ((FIT_EVENT)36) // start/stop/marker -#define FIT_EVENT_FRONT_GEAR_CHANGE ((FIT_EVENT)42) // marker -#define FIT_EVENT_REAR_GEAR_CHANGE ((FIT_EVENT)43) // marker -#define FIT_EVENT_RIDER_POSITION_CHANGE ((FIT_EVENT)44) // marker -#define FIT_EVENT_ELEV_HIGH_ALERT ((FIT_EVENT)45) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_ELEV_LOW_ALERT ((FIT_EVENT)46) // Group 0. Start / stop when in alert condition. -#define FIT_EVENT_COMM_TIMEOUT ((FIT_EVENT)47) // marker + +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_SPORT_BITS_0)0x01) +#define FIT_SPORT_BITS_0_RUNNING ((FIT_SPORT_BITS_0)0x02) +#define FIT_SPORT_BITS_0_CYCLING ((FIT_SPORT_BITS_0)0x04) +#define FIT_SPORT_BITS_0_TRANSITION ((FIT_SPORT_BITS_0)0x08) // Mulitsport transition +#define FIT_SPORT_BITS_0_FITNESS_EQUIPMENT ((FIT_SPORT_BITS_0)0x10) +#define FIT_SPORT_BITS_0_SWIMMING ((FIT_SPORT_BITS_0)0x20) +#define FIT_SPORT_BITS_0_BASKETBALL ((FIT_SPORT_BITS_0)0x40) +#define FIT_SPORT_BITS_0_SOCCER ((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_SPORT_BITS_1)0x01) +#define FIT_SPORT_BITS_1_AMERICAN_FOOTBALL ((FIT_SPORT_BITS_1)0x02) +#define FIT_SPORT_BITS_1_TRAINING ((FIT_SPORT_BITS_1)0x04) +#define FIT_SPORT_BITS_1_WALKING ((FIT_SPORT_BITS_1)0x08) +#define FIT_SPORT_BITS_1_CROSS_COUNTRY_SKIING ((FIT_SPORT_BITS_1)0x10) +#define FIT_SPORT_BITS_1_ALPINE_SKIING ((FIT_SPORT_BITS_1)0x20) +#define FIT_SPORT_BITS_1_SNOWBOARDING ((FIT_SPORT_BITS_1)0x40) +#define FIT_SPORT_BITS_1_ROWING ((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_SPORT_BITS_2)0x01) +#define FIT_SPORT_BITS_2_HIKING ((FIT_SPORT_BITS_2)0x02) +#define FIT_SPORT_BITS_2_MULTISPORT ((FIT_SPORT_BITS_2)0x04) +#define FIT_SPORT_BITS_2_PADDLING ((FIT_SPORT_BITS_2)0x08) +#define FIT_SPORT_BITS_2_FLYING ((FIT_SPORT_BITS_2)0x10) +#define FIT_SPORT_BITS_2_E_BIKING ((FIT_SPORT_BITS_2)0x20) +#define FIT_SPORT_BITS_2_MOTORCYCLING ((FIT_SPORT_BITS_2)0x40) +#define FIT_SPORT_BITS_2_BOATING ((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_SPORT_BITS_3)0x01) +#define FIT_SPORT_BITS_3_GOLF ((FIT_SPORT_BITS_3)0x02) +#define FIT_SPORT_BITS_3_HANG_GLIDING ((FIT_SPORT_BITS_3)0x04) +#define FIT_SPORT_BITS_3_HORSEBACK_RIDING ((FIT_SPORT_BITS_3)0x08) +#define FIT_SPORT_BITS_3_HUNTING ((FIT_SPORT_BITS_3)0x10) +#define FIT_SPORT_BITS_3_FISHING ((FIT_SPORT_BITS_3)0x20) +#define FIT_SPORT_BITS_3_INLINE_SKATING ((FIT_SPORT_BITS_3)0x40) +#define FIT_SPORT_BITS_3_ROCK_CLIMBING ((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_SPORT_BITS_4)0x01) +#define FIT_SPORT_BITS_4_ICE_SKATING ((FIT_SPORT_BITS_4)0x02) +#define FIT_SPORT_BITS_4_SKY_DIVING ((FIT_SPORT_BITS_4)0x04) +#define FIT_SPORT_BITS_4_SNOWSHOEING ((FIT_SPORT_BITS_4)0x08) +#define FIT_SPORT_BITS_4_SNOWMOBILING ((FIT_SPORT_BITS_4)0x10) +#define FIT_SPORT_BITS_4_STAND_UP_PADDLEBOARDING ((FIT_SPORT_BITS_4)0x20) +#define FIT_SPORT_BITS_4_SURFING ((FIT_SPORT_BITS_4)0x40) +#define FIT_SPORT_BITS_4_WAKEBOARDING ((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_SPORT_BITS_5)0x01) +#define FIT_SPORT_BITS_5_KAYAKING ((FIT_SPORT_BITS_5)0x02) +#define FIT_SPORT_BITS_5_RAFTING ((FIT_SPORT_BITS_5)0x04) +#define FIT_SPORT_BITS_5_WINDSURFING ((FIT_SPORT_BITS_5)0x08) +#define FIT_SPORT_BITS_5_KITESURFING ((FIT_SPORT_BITS_5)0x10) +#define FIT_SPORT_BITS_5_TACTICAL ((FIT_SPORT_BITS_5)0x20) +#define FIT_SPORT_BITS_5_JUMPMASTER ((FIT_SPORT_BITS_5)0x40) +#define FIT_SPORT_BITS_5_BOXING ((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_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_SUB_SPORT)0) +#define FIT_SUB_SPORT_TREADMILL ((FIT_SUB_SPORT)1) // Run/Fitness Equipment +#define FIT_SUB_SPORT_STREET ((FIT_SUB_SPORT)2) // Run +#define FIT_SUB_SPORT_TRAIL ((FIT_SUB_SPORT)3) // Run +#define FIT_SUB_SPORT_TRACK ((FIT_SUB_SPORT)4) // Run +#define FIT_SUB_SPORT_SPIN ((FIT_SUB_SPORT)5) // Cycling +#define FIT_SUB_SPORT_INDOOR_CYCLING ((FIT_SUB_SPORT)6) // Cycling/Fitness Equipment +#define FIT_SUB_SPORT_ROAD ((FIT_SUB_SPORT)7) // Cycling +#define FIT_SUB_SPORT_MOUNTAIN ((FIT_SUB_SPORT)8) // Cycling +#define FIT_SUB_SPORT_DOWNHILL ((FIT_SUB_SPORT)9) // Cycling +#define FIT_SUB_SPORT_RECUMBENT ((FIT_SUB_SPORT)10) // Cycling +#define FIT_SUB_SPORT_CYCLOCROSS ((FIT_SUB_SPORT)11) // Cycling +#define FIT_SUB_SPORT_HAND_CYCLING ((FIT_SUB_SPORT)12) // Cycling +#define FIT_SUB_SPORT_TRACK_CYCLING ((FIT_SUB_SPORT)13) // Cycling +#define FIT_SUB_SPORT_INDOOR_ROWING ((FIT_SUB_SPORT)14) // Fitness Equipment +#define FIT_SUB_SPORT_ELLIPTICAL ((FIT_SUB_SPORT)15) // Fitness Equipment +#define FIT_SUB_SPORT_STAIR_CLIMBING ((FIT_SUB_SPORT)16) // Fitness Equipment +#define FIT_SUB_SPORT_LAP_SWIMMING ((FIT_SUB_SPORT)17) // Swimming +#define FIT_SUB_SPORT_OPEN_WATER ((FIT_SUB_SPORT)18) // Swimming +#define FIT_SUB_SPORT_FLEXIBILITY_TRAINING ((FIT_SUB_SPORT)19) // Training +#define FIT_SUB_SPORT_STRENGTH_TRAINING ((FIT_SUB_SPORT)20) // Training +#define FIT_SUB_SPORT_WARM_UP ((FIT_SUB_SPORT)21) // Tennis +#define FIT_SUB_SPORT_MATCH ((FIT_SUB_SPORT)22) // Tennis +#define FIT_SUB_SPORT_EXERCISE ((FIT_SUB_SPORT)23) // Tennis +#define FIT_SUB_SPORT_CHALLENGE ((FIT_SUB_SPORT)24) +#define FIT_SUB_SPORT_INDOOR_SKIING ((FIT_SUB_SPORT)25) // Fitness Equipment +#define FIT_SUB_SPORT_CARDIO_TRAINING ((FIT_SUB_SPORT)26) // Training +#define FIT_SUB_SPORT_INDOOR_WALKING ((FIT_SUB_SPORT)27) // Walking/Fitness Equipment +#define FIT_SUB_SPORT_E_BIKE_FITNESS ((FIT_SUB_SPORT)28) // E-Biking +#define FIT_SUB_SPORT_BMX ((FIT_SUB_SPORT)29) // Cycling +#define FIT_SUB_SPORT_CASUAL_WALKING ((FIT_SUB_SPORT)30) // Walking +#define FIT_SUB_SPORT_SPEED_WALKING ((FIT_SUB_SPORT)31) // Walking +#define FIT_SUB_SPORT_BIKE_TO_RUN_TRANSITION ((FIT_SUB_SPORT)32) // Transition +#define FIT_SUB_SPORT_RUN_TO_BIKE_TRANSITION ((FIT_SUB_SPORT)33) // Transition +#define FIT_SUB_SPORT_SWIM_TO_BIKE_TRANSITION ((FIT_SUB_SPORT)34) // Transition +#define FIT_SUB_SPORT_ATV ((FIT_SUB_SPORT)35) // Motorcycling +#define FIT_SUB_SPORT_MOTOCROSS ((FIT_SUB_SPORT)36) // Motorcycling +#define FIT_SUB_SPORT_BACKCOUNTRY ((FIT_SUB_SPORT)37) // Alpine Skiing/Snowboarding +#define FIT_SUB_SPORT_RESORT ((FIT_SUB_SPORT)38) // Alpine Skiing/Snowboarding +#define FIT_SUB_SPORT_RC_DRONE ((FIT_SUB_SPORT)39) // Flying +#define FIT_SUB_SPORT_WINGSUIT ((FIT_SUB_SPORT)40) // Flying +#define FIT_SUB_SPORT_WHITEWATER ((FIT_SUB_SPORT)41) // Kayaking/Rafting +#define FIT_SUB_SPORT_SKATE_SKIING ((FIT_SUB_SPORT)42) // Cross Country Skiing +#define FIT_SUB_SPORT_YOGA ((FIT_SUB_SPORT)43) // Training +#define FIT_SUB_SPORT_PILATES ((FIT_SUB_SPORT)44) // Fitness Equipment +#define FIT_SUB_SPORT_INDOOR_RUNNING ((FIT_SUB_SPORT)45) // Run +#define FIT_SUB_SPORT_GRAVEL_CYCLING ((FIT_SUB_SPORT)46) // Cycling +#define FIT_SUB_SPORT_E_BIKE_MOUNTAIN ((FIT_SUB_SPORT)47) // Cycling +#define FIT_SUB_SPORT_COMMUTING ((FIT_SUB_SPORT)48) // Cycling +#define FIT_SUB_SPORT_MIXED_SURFACE ((FIT_SUB_SPORT)49) // Cycling +#define FIT_SUB_SPORT_NAVIGATE ((FIT_SUB_SPORT)50) +#define FIT_SUB_SPORT_TRACK_ME ((FIT_SUB_SPORT)51) +#define FIT_SUB_SPORT_MAP ((FIT_SUB_SPORT)52) +#define FIT_SUB_SPORT_SINGLE_GAS_DIVING ((FIT_SUB_SPORT)53) // Diving +#define FIT_SUB_SPORT_MULTI_GAS_DIVING ((FIT_SUB_SPORT)54) // Diving +#define FIT_SUB_SPORT_GAUGE_DIVING ((FIT_SUB_SPORT)55) // Diving +#define FIT_SUB_SPORT_APNEA_DIVING ((FIT_SUB_SPORT)56) // Diving +#define FIT_SUB_SPORT_APNEA_HUNTING ((FIT_SUB_SPORT)57) // Diving +#define FIT_SUB_SPORT_VIRTUAL_ACTIVITY ((FIT_SUB_SPORT)58) +#define FIT_SUB_SPORT_OBSTACLE ((FIT_SUB_SPORT)59) // Used for events where participants run, crawl through mud, climb over walls, etc. +#define FIT_SUB_SPORT_ALL ((FIT_SUB_SPORT)254) +#define FIT_SUB_SPORT_COUNT 61 + +typedef FIT_ENUM FIT_SPORT_EVENT; +#define FIT_SPORT_EVENT_INVALID FIT_ENUM_INVALID +#define FIT_SPORT_EVENT_UNCATEGORIZED ((FIT_SPORT_EVENT)0) +#define FIT_SPORT_EVENT_GEOCACHING ((FIT_SPORT_EVENT)1) +#define FIT_SPORT_EVENT_FITNESS ((FIT_SPORT_EVENT)2) +#define FIT_SPORT_EVENT_RECREATION ((FIT_SPORT_EVENT)3) +#define FIT_SPORT_EVENT_RACE ((FIT_SPORT_EVENT)4) +#define FIT_SPORT_EVENT_SPECIAL_EVENT ((FIT_SPORT_EVENT)5) +#define FIT_SPORT_EVENT_TRAINING ((FIT_SPORT_EVENT)6) +#define FIT_SPORT_EVENT_TRANSPORTATION ((FIT_SPORT_EVENT)7) +#define FIT_SPORT_EVENT_TOURING ((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_ACTIVITY)0) +#define FIT_ACTIVITY_AUTO_MULTI_SPORT ((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_INTENSITY)0) +#define FIT_INTENSITY_REST ((FIT_INTENSITY)1) +#define FIT_INTENSITY_WARMUP ((FIT_INTENSITY)2) +#define FIT_INTENSITY_COOLDOWN ((FIT_INTENSITY)3) +#define FIT_INTENSITY_COUNT 4 + +typedef FIT_ENUM FIT_SESSION_TRIGGER; +#define FIT_SESSION_TRIGGER_INVALID FIT_ENUM_INVALID +#define FIT_SESSION_TRIGGER_ACTIVITY_END ((FIT_SESSION_TRIGGER)0) +#define FIT_SESSION_TRIGGER_MANUAL ((FIT_SESSION_TRIGGER)1) // User changed sport. +#define FIT_SESSION_TRIGGER_AUTO_MULTI_SPORT ((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_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_AUTOLAP_TRIGGER)0) +#define FIT_AUTOLAP_TRIGGER_DISTANCE ((FIT_AUTOLAP_TRIGGER)1) +#define FIT_AUTOLAP_TRIGGER_POSITION_START ((FIT_AUTOLAP_TRIGGER)2) +#define FIT_AUTOLAP_TRIGGER_POSITION_LAP ((FIT_AUTOLAP_TRIGGER)3) +#define FIT_AUTOLAP_TRIGGER_POSITION_WAYPOINT ((FIT_AUTOLAP_TRIGGER)4) +#define FIT_AUTOLAP_TRIGGER_POSITION_MARKED ((FIT_AUTOLAP_TRIGGER)5) +#define FIT_AUTOLAP_TRIGGER_OFF ((FIT_AUTOLAP_TRIGGER)6) +#define FIT_AUTOLAP_TRIGGER_COUNT 7 + +typedef FIT_ENUM FIT_LAP_TRIGGER; +#define FIT_LAP_TRIGGER_INVALID FIT_ENUM_INVALID +#define FIT_LAP_TRIGGER_MANUAL ((FIT_LAP_TRIGGER)0) +#define FIT_LAP_TRIGGER_TIME ((FIT_LAP_TRIGGER)1) +#define FIT_LAP_TRIGGER_DISTANCE ((FIT_LAP_TRIGGER)2) +#define FIT_LAP_TRIGGER_POSITION_START ((FIT_LAP_TRIGGER)3) +#define FIT_LAP_TRIGGER_POSITION_LAP ((FIT_LAP_TRIGGER)4) +#define FIT_LAP_TRIGGER_POSITION_WAYPOINT ((FIT_LAP_TRIGGER)5) +#define FIT_LAP_TRIGGER_POSITION_MARKED ((FIT_LAP_TRIGGER)6) +#define FIT_LAP_TRIGGER_SESSION_END ((FIT_LAP_TRIGGER)7) +#define FIT_LAP_TRIGGER_FITNESS_EQUIPMENT ((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_TIME_MODE)0) +#define FIT_TIME_MODE_HOUR24 ((FIT_TIME_MODE)1) // Does not use a leading zero and has a colon +#define FIT_TIME_MODE_MILITARY ((FIT_TIME_MODE)2) // Uses a leading zero and does not have a colon +#define FIT_TIME_MODE_HOUR_12_WITH_SECONDS ((FIT_TIME_MODE)3) +#define FIT_TIME_MODE_HOUR_24_WITH_SECONDS ((FIT_TIME_MODE)4) +#define FIT_TIME_MODE_UTC ((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_BACKLIGHT_MODE)0) +#define FIT_BACKLIGHT_MODE_MANUAL ((FIT_BACKLIGHT_MODE)1) +#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES ((FIT_BACKLIGHT_MODE)2) +#define FIT_BACKLIGHT_MODE_AUTO_BRIGHTNESS ((FIT_BACKLIGHT_MODE)3) +#define FIT_BACKLIGHT_MODE_SMART_NOTIFICATIONS ((FIT_BACKLIGHT_MODE)4) +#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES_NIGHT ((FIT_BACKLIGHT_MODE)5) +#define FIT_BACKLIGHT_MODE_KEY_AND_MESSAGES_AND_SMART_NOTIFICATIONS ((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_DATE_MODE)0) +#define FIT_DATE_MODE_MONTH_DAY ((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_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_EVENT)0) // Group 0. Start / stop_all +#define FIT_EVENT_WORKOUT ((FIT_EVENT)3) // start / stop +#define FIT_EVENT_WORKOUT_STEP ((FIT_EVENT)4) // Start at beginning of workout. Stop at end of each step. +#define FIT_EVENT_POWER_DOWN ((FIT_EVENT)5) // stop_all group 0 +#define FIT_EVENT_POWER_UP ((FIT_EVENT)6) // stop_all group 0 +#define FIT_EVENT_OFF_COURSE ((FIT_EVENT)7) // start / stop group 0 +#define FIT_EVENT_SESSION ((FIT_EVENT)8) // Stop at end of each session. +#define FIT_EVENT_LAP ((FIT_EVENT)9) // Stop at end of each lap. +#define FIT_EVENT_COURSE_POINT ((FIT_EVENT)10) // marker +#define FIT_EVENT_BATTERY ((FIT_EVENT)11) // marker +#define FIT_EVENT_VIRTUAL_PARTNER_PACE ((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_EVENT)13) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_HR_LOW_ALERT ((FIT_EVENT)14) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_SPEED_HIGH_ALERT ((FIT_EVENT)15) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_SPEED_LOW_ALERT ((FIT_EVENT)16) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_CAD_HIGH_ALERT ((FIT_EVENT)17) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_CAD_LOW_ALERT ((FIT_EVENT)18) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_POWER_HIGH_ALERT ((FIT_EVENT)19) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_POWER_LOW_ALERT ((FIT_EVENT)20) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_RECOVERY_HR ((FIT_EVENT)21) // marker +#define FIT_EVENT_BATTERY_LOW ((FIT_EVENT)22) // marker +#define FIT_EVENT_TIME_DURATION_ALERT ((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_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_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_EVENT)26) // Group 1.. Stop at end of activity. +#define FIT_EVENT_FITNESS_EQUIPMENT ((FIT_EVENT)27) // marker +#define FIT_EVENT_LENGTH ((FIT_EVENT)28) // Stop at end of each length. +#define FIT_EVENT_USER_MARKER ((FIT_EVENT)32) // marker +#define FIT_EVENT_SPORT_POINT ((FIT_EVENT)33) // marker +#define FIT_EVENT_CALIBRATION ((FIT_EVENT)36) // start/stop/marker +#define FIT_EVENT_FRONT_GEAR_CHANGE ((FIT_EVENT)42) // marker +#define FIT_EVENT_REAR_GEAR_CHANGE ((FIT_EVENT)43) // marker +#define FIT_EVENT_RIDER_POSITION_CHANGE ((FIT_EVENT)44) // marker +#define FIT_EVENT_ELEV_HIGH_ALERT ((FIT_EVENT)45) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_ELEV_LOW_ALERT ((FIT_EVENT)46) // Group 0. Start / stop when in alert condition. +#define FIT_EVENT_COMM_TIMEOUT ((FIT_EVENT)47) // marker #define FIT_EVENT_RADAR_THREAT_ALERT ((FIT_EVENT)75) // start/stop/marker #define FIT_EVENT_COUNT 37 - -typedef FIT_ENUM FIT_EVENT_TYPE; -#define FIT_EVENT_TYPE_INVALID FIT_ENUM_INVALID -#define FIT_EVENT_TYPE_START ((FIT_EVENT_TYPE)0) -#define FIT_EVENT_TYPE_STOP ((FIT_EVENT_TYPE)1) -#define FIT_EVENT_TYPE_CONSECUTIVE_DEPRECIATED ((FIT_EVENT_TYPE)2) -#define FIT_EVENT_TYPE_MARKER ((FIT_EVENT_TYPE)3) -#define FIT_EVENT_TYPE_STOP_ALL ((FIT_EVENT_TYPE)4) -#define FIT_EVENT_TYPE_BEGIN_DEPRECIATED ((FIT_EVENT_TYPE)5) -#define FIT_EVENT_TYPE_END_DEPRECIATED ((FIT_EVENT_TYPE)6) -#define FIT_EVENT_TYPE_END_ALL_DEPRECIATED ((FIT_EVENT_TYPE)7) -#define FIT_EVENT_TYPE_STOP_DISABLE ((FIT_EVENT_TYPE)8) -#define FIT_EVENT_TYPE_STOP_DISABLE_ALL ((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_TIMER_TRIGGER)0) -#define FIT_TIMER_TRIGGER_AUTO ((FIT_TIMER_TRIGGER)1) -#define FIT_TIMER_TRIGGER_FITNESS_EQUIPMENT ((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_FITNESS_EQUIPMENT_STATE)0) -#define FIT_FITNESS_EQUIPMENT_STATE_IN_USE ((FIT_FITNESS_EQUIPMENT_STATE)1) -#define FIT_FITNESS_EQUIPMENT_STATE_PAUSED ((FIT_FITNESS_EQUIPMENT_STATE)2) -#define FIT_FITNESS_EQUIPMENT_STATE_UNKNOWN ((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_TONE)0) -#define FIT_TONE_TONE ((FIT_TONE)1) -#define FIT_TONE_VIBRATE ((FIT_TONE)2) -#define FIT_TONE_TONE_AND_VIBRATE ((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_AUTOSCROLL)0) -#define FIT_AUTOSCROLL_SLOW ((FIT_AUTOSCROLL)1) -#define FIT_AUTOSCROLL_MEDIUM ((FIT_AUTOSCROLL)2) -#define FIT_AUTOSCROLL_FAST ((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_ACTIVITY_CLASS)0x7F) // 0 to 100 -#define FIT_ACTIVITY_CLASS_LEVEL_MAX ((FIT_ACTIVITY_CLASS)100) -#define FIT_ACTIVITY_CLASS_ATHLETE ((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_HR_ZONE_CALC)0) -#define FIT_HR_ZONE_CALC_PERCENT_MAX_HR ((FIT_HR_ZONE_CALC)1) -#define FIT_HR_ZONE_CALC_PERCENT_HRR ((FIT_HR_ZONE_CALC)2) -#define FIT_HR_ZONE_CALC_COUNT 3 - -typedef FIT_ENUM FIT_PWR_ZONE_CALC; -#define FIT_PWR_ZONE_CALC_INVALID FIT_ENUM_INVALID -#define FIT_PWR_ZONE_CALC_CUSTOM ((FIT_PWR_ZONE_CALC)0) -#define FIT_PWR_ZONE_CALC_PERCENT_FTP ((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_WKT_STEP_DURATION)0) -#define FIT_WKT_STEP_DURATION_DISTANCE ((FIT_WKT_STEP_DURATION)1) -#define FIT_WKT_STEP_DURATION_HR_LESS_THAN ((FIT_WKT_STEP_DURATION)2) -#define FIT_WKT_STEP_DURATION_HR_GREATER_THAN ((FIT_WKT_STEP_DURATION)3) -#define FIT_WKT_STEP_DURATION_CALORIES ((FIT_WKT_STEP_DURATION)4) -#define FIT_WKT_STEP_DURATION_OPEN ((FIT_WKT_STEP_DURATION)5) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_STEPS_CMPLT ((FIT_WKT_STEP_DURATION)6) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_TIME ((FIT_WKT_STEP_DURATION)7) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_DISTANCE ((FIT_WKT_STEP_DURATION)8) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_CALORIES ((FIT_WKT_STEP_DURATION)9) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_HR_LESS_THAN ((FIT_WKT_STEP_DURATION)10) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_HR_GREATER_THAN ((FIT_WKT_STEP_DURATION)11) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_LESS_THAN ((FIT_WKT_STEP_DURATION)12) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_GREATER_THAN ((FIT_WKT_STEP_DURATION)13) -#define FIT_WKT_STEP_DURATION_POWER_LESS_THAN ((FIT_WKT_STEP_DURATION)14) -#define FIT_WKT_STEP_DURATION_POWER_GREATER_THAN ((FIT_WKT_STEP_DURATION)15) -#define FIT_WKT_STEP_DURATION_TRAINING_PEAKS_TSS ((FIT_WKT_STEP_DURATION)16) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_LAST_LAP_LESS_THAN ((FIT_WKT_STEP_DURATION)17) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_MAX_POWER_LAST_LAP_LESS_THAN ((FIT_WKT_STEP_DURATION)18) -#define FIT_WKT_STEP_DURATION_POWER_3S_LESS_THAN ((FIT_WKT_STEP_DURATION)19) -#define FIT_WKT_STEP_DURATION_POWER_10S_LESS_THAN ((FIT_WKT_STEP_DURATION)20) -#define FIT_WKT_STEP_DURATION_POWER_30S_LESS_THAN ((FIT_WKT_STEP_DURATION)21) -#define FIT_WKT_STEP_DURATION_POWER_3S_GREATER_THAN ((FIT_WKT_STEP_DURATION)22) -#define FIT_WKT_STEP_DURATION_POWER_10S_GREATER_THAN ((FIT_WKT_STEP_DURATION)23) -#define FIT_WKT_STEP_DURATION_POWER_30S_GREATER_THAN ((FIT_WKT_STEP_DURATION)24) -#define FIT_WKT_STEP_DURATION_POWER_LAP_LESS_THAN ((FIT_WKT_STEP_DURATION)25) -#define FIT_WKT_STEP_DURATION_POWER_LAP_GREATER_THAN ((FIT_WKT_STEP_DURATION)26) -#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_TRAINING_PEAKS_TSS ((FIT_WKT_STEP_DURATION)27) -#define FIT_WKT_STEP_DURATION_REPETITION_TIME ((FIT_WKT_STEP_DURATION)28) -#define FIT_WKT_STEP_DURATION_REPS ((FIT_WKT_STEP_DURATION)29) -#define FIT_WKT_STEP_DURATION_TIME_ONLY ((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_WKT_STEP_TARGET)0) -#define FIT_WKT_STEP_TARGET_HEART_RATE ((FIT_WKT_STEP_TARGET)1) -#define FIT_WKT_STEP_TARGET_OPEN ((FIT_WKT_STEP_TARGET)2) -#define FIT_WKT_STEP_TARGET_CADENCE ((FIT_WKT_STEP_TARGET)3) -#define FIT_WKT_STEP_TARGET_POWER ((FIT_WKT_STEP_TARGET)4) -#define FIT_WKT_STEP_TARGET_GRADE ((FIT_WKT_STEP_TARGET)5) -#define FIT_WKT_STEP_TARGET_RESISTANCE ((FIT_WKT_STEP_TARGET)6) -#define FIT_WKT_STEP_TARGET_POWER_3S ((FIT_WKT_STEP_TARGET)7) -#define FIT_WKT_STEP_TARGET_POWER_10S ((FIT_WKT_STEP_TARGET)8) -#define FIT_WKT_STEP_TARGET_POWER_30S ((FIT_WKT_STEP_TARGET)9) -#define FIT_WKT_STEP_TARGET_POWER_LAP ((FIT_WKT_STEP_TARGET)10) -#define FIT_WKT_STEP_TARGET_SWIM_STROKE ((FIT_WKT_STEP_TARGET)11) -#define FIT_WKT_STEP_TARGET_SPEED_LAP ((FIT_WKT_STEP_TARGET)12) -#define FIT_WKT_STEP_TARGET_HEART_RATE_LAP ((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_GOAL)0) -#define FIT_GOAL_DISTANCE ((FIT_GOAL)1) -#define FIT_GOAL_CALORIES ((FIT_GOAL)2) -#define FIT_GOAL_FREQUENCY ((FIT_GOAL)3) -#define FIT_GOAL_STEPS ((FIT_GOAL)4) -#define FIT_GOAL_ASCENT ((FIT_GOAL)5) -#define FIT_GOAL_ACTIVE_MINUTES ((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_GOAL_RECURRENCE)0) -#define FIT_GOAL_RECURRENCE_DAILY ((FIT_GOAL_RECURRENCE)1) -#define FIT_GOAL_RECURRENCE_WEEKLY ((FIT_GOAL_RECURRENCE)2) -#define FIT_GOAL_RECURRENCE_MONTHLY ((FIT_GOAL_RECURRENCE)3) -#define FIT_GOAL_RECURRENCE_YEARLY ((FIT_GOAL_RECURRENCE)4) -#define FIT_GOAL_RECURRENCE_CUSTOM ((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_GOAL_SOURCE)0) // Device generated -#define FIT_GOAL_SOURCE_COMMUNITY ((FIT_GOAL_SOURCE)1) // Social network sourced goal -#define FIT_GOAL_SOURCE_USER ((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_SCHEDULE)0) -#define FIT_SCHEDULE_COURSE ((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_COURSE_POINT)0) -#define FIT_COURSE_POINT_SUMMIT ((FIT_COURSE_POINT)1) -#define FIT_COURSE_POINT_VALLEY ((FIT_COURSE_POINT)2) -#define FIT_COURSE_POINT_WATER ((FIT_COURSE_POINT)3) -#define FIT_COURSE_POINT_FOOD ((FIT_COURSE_POINT)4) -#define FIT_COURSE_POINT_DANGER ((FIT_COURSE_POINT)5) -#define FIT_COURSE_POINT_LEFT ((FIT_COURSE_POINT)6) -#define FIT_COURSE_POINT_RIGHT ((FIT_COURSE_POINT)7) -#define FIT_COURSE_POINT_STRAIGHT ((FIT_COURSE_POINT)8) -#define FIT_COURSE_POINT_FIRST_AID ((FIT_COURSE_POINT)9) -#define FIT_COURSE_POINT_FOURTH_CATEGORY ((FIT_COURSE_POINT)10) -#define FIT_COURSE_POINT_THIRD_CATEGORY ((FIT_COURSE_POINT)11) -#define FIT_COURSE_POINT_SECOND_CATEGORY ((FIT_COURSE_POINT)12) -#define FIT_COURSE_POINT_FIRST_CATEGORY ((FIT_COURSE_POINT)13) -#define FIT_COURSE_POINT_HORS_CATEGORY ((FIT_COURSE_POINT)14) -#define FIT_COURSE_POINT_SPRINT ((FIT_COURSE_POINT)15) -#define FIT_COURSE_POINT_LEFT_FORK ((FIT_COURSE_POINT)16) -#define FIT_COURSE_POINT_RIGHT_FORK ((FIT_COURSE_POINT)17) -#define FIT_COURSE_POINT_MIDDLE_FORK ((FIT_COURSE_POINT)18) -#define FIT_COURSE_POINT_SLIGHT_LEFT ((FIT_COURSE_POINT)19) -#define FIT_COURSE_POINT_SHARP_LEFT ((FIT_COURSE_POINT)20) -#define FIT_COURSE_POINT_SLIGHT_RIGHT ((FIT_COURSE_POINT)21) -#define FIT_COURSE_POINT_SHARP_RIGHT ((FIT_COURSE_POINT)22) -#define FIT_COURSE_POINT_U_TURN ((FIT_COURSE_POINT)23) -#define FIT_COURSE_POINT_SEGMENT_START ((FIT_COURSE_POINT)24) -#define FIT_COURSE_POINT_SEGMENT_END ((FIT_COURSE_POINT)25) -#define FIT_COURSE_POINT_COUNT 26 - -typedef FIT_UINT16 FIT_MANUFACTURER; -#define FIT_MANUFACTURER_INVALID FIT_UINT16_INVALID -#define FIT_MANUFACTURER_GARMIN ((FIT_MANUFACTURER)1) -#define FIT_MANUFACTURER_GARMIN_FR405_ANTFS ((FIT_MANUFACTURER)2) // Do not use. Used by FR405 for ANTFS man id. -#define FIT_MANUFACTURER_ZEPHYR ((FIT_MANUFACTURER)3) -#define FIT_MANUFACTURER_DAYTON ((FIT_MANUFACTURER)4) -#define FIT_MANUFACTURER_IDT ((FIT_MANUFACTURER)5) -#define FIT_MANUFACTURER_SRM ((FIT_MANUFACTURER)6) -#define FIT_MANUFACTURER_QUARQ ((FIT_MANUFACTURER)7) -#define FIT_MANUFACTURER_IBIKE ((FIT_MANUFACTURER)8) -#define FIT_MANUFACTURER_SARIS ((FIT_MANUFACTURER)9) -#define FIT_MANUFACTURER_SPARK_HK ((FIT_MANUFACTURER)10) -#define FIT_MANUFACTURER_TANITA ((FIT_MANUFACTURER)11) -#define FIT_MANUFACTURER_ECHOWELL ((FIT_MANUFACTURER)12) -#define FIT_MANUFACTURER_DYNASTREAM_OEM ((FIT_MANUFACTURER)13) -#define FIT_MANUFACTURER_NAUTILUS ((FIT_MANUFACTURER)14) -#define FIT_MANUFACTURER_DYNASTREAM ((FIT_MANUFACTURER)15) -#define FIT_MANUFACTURER_TIMEX ((FIT_MANUFACTURER)16) -#define FIT_MANUFACTURER_METRIGEAR ((FIT_MANUFACTURER)17) -#define FIT_MANUFACTURER_XELIC ((FIT_MANUFACTURER)18) -#define FIT_MANUFACTURER_BEURER ((FIT_MANUFACTURER)19) -#define FIT_MANUFACTURER_CARDIOSPORT ((FIT_MANUFACTURER)20) -#define FIT_MANUFACTURER_A_AND_D ((FIT_MANUFACTURER)21) -#define FIT_MANUFACTURER_HMM ((FIT_MANUFACTURER)22) -#define FIT_MANUFACTURER_SUUNTO ((FIT_MANUFACTURER)23) -#define FIT_MANUFACTURER_THITA_ELEKTRONIK ((FIT_MANUFACTURER)24) -#define FIT_MANUFACTURER_GPULSE ((FIT_MANUFACTURER)25) -#define FIT_MANUFACTURER_CLEAN_MOBILE ((FIT_MANUFACTURER)26) -#define FIT_MANUFACTURER_PEDAL_BRAIN ((FIT_MANUFACTURER)27) -#define FIT_MANUFACTURER_PEAKSWARE ((FIT_MANUFACTURER)28) -#define FIT_MANUFACTURER_SAXONAR ((FIT_MANUFACTURER)29) -#define FIT_MANUFACTURER_LEMOND_FITNESS ((FIT_MANUFACTURER)30) -#define FIT_MANUFACTURER_DEXCOM ((FIT_MANUFACTURER)31) -#define FIT_MANUFACTURER_WAHOO_FITNESS ((FIT_MANUFACTURER)32) -#define FIT_MANUFACTURER_OCTANE_FITNESS ((FIT_MANUFACTURER)33) -#define FIT_MANUFACTURER_ARCHINOETICS ((FIT_MANUFACTURER)34) -#define FIT_MANUFACTURER_THE_HURT_BOX ((FIT_MANUFACTURER)35) -#define FIT_MANUFACTURER_CITIZEN_SYSTEMS ((FIT_MANUFACTURER)36) -#define FIT_MANUFACTURER_MAGELLAN ((FIT_MANUFACTURER)37) -#define FIT_MANUFACTURER_OSYNCE ((FIT_MANUFACTURER)38) -#define FIT_MANUFACTURER_HOLUX ((FIT_MANUFACTURER)39) -#define FIT_MANUFACTURER_CONCEPT2 ((FIT_MANUFACTURER)40) -#define FIT_MANUFACTURER_ONE_GIANT_LEAP ((FIT_MANUFACTURER)42) -#define FIT_MANUFACTURER_ACE_SENSOR ((FIT_MANUFACTURER)43) -#define FIT_MANUFACTURER_BRIM_BROTHERS ((FIT_MANUFACTURER)44) -#define FIT_MANUFACTURER_XPLOVA ((FIT_MANUFACTURER)45) -#define FIT_MANUFACTURER_PERCEPTION_DIGITAL ((FIT_MANUFACTURER)46) -#define FIT_MANUFACTURER_BF1SYSTEMS ((FIT_MANUFACTURER)47) -#define FIT_MANUFACTURER_PIONEER ((FIT_MANUFACTURER)48) -#define FIT_MANUFACTURER_SPANTEC ((FIT_MANUFACTURER)49) -#define FIT_MANUFACTURER_METALOGICS ((FIT_MANUFACTURER)50) -#define FIT_MANUFACTURER_4IIIIS ((FIT_MANUFACTURER)51) -#define FIT_MANUFACTURER_SEIKO_EPSON ((FIT_MANUFACTURER)52) -#define FIT_MANUFACTURER_SEIKO_EPSON_OEM ((FIT_MANUFACTURER)53) -#define FIT_MANUFACTURER_IFOR_POWELL ((FIT_MANUFACTURER)54) -#define FIT_MANUFACTURER_MAXWELL_GUIDER ((FIT_MANUFACTURER)55) -#define FIT_MANUFACTURER_STAR_TRAC ((FIT_MANUFACTURER)56) -#define FIT_MANUFACTURER_BREAKAWAY ((FIT_MANUFACTURER)57) -#define FIT_MANUFACTURER_ALATECH_TECHNOLOGY_LTD ((FIT_MANUFACTURER)58) -#define FIT_MANUFACTURER_MIO_TECHNOLOGY_EUROPE ((FIT_MANUFACTURER)59) -#define FIT_MANUFACTURER_ROTOR ((FIT_MANUFACTURER)60) -#define FIT_MANUFACTURER_GEONAUTE ((FIT_MANUFACTURER)61) -#define FIT_MANUFACTURER_ID_BIKE ((FIT_MANUFACTURER)62) -#define FIT_MANUFACTURER_SPECIALIZED ((FIT_MANUFACTURER)63) -#define FIT_MANUFACTURER_WTEK ((FIT_MANUFACTURER)64) -#define FIT_MANUFACTURER_PHYSICAL_ENTERPRISES ((FIT_MANUFACTURER)65) -#define FIT_MANUFACTURER_NORTH_POLE_ENGINEERING ((FIT_MANUFACTURER)66) -#define FIT_MANUFACTURER_BKOOL ((FIT_MANUFACTURER)67) -#define FIT_MANUFACTURER_CATEYE ((FIT_MANUFACTURER)68) -#define FIT_MANUFACTURER_STAGES_CYCLING ((FIT_MANUFACTURER)69) -#define FIT_MANUFACTURER_SIGMASPORT ((FIT_MANUFACTURER)70) -#define FIT_MANUFACTURER_TOMTOM ((FIT_MANUFACTURER)71) -#define FIT_MANUFACTURER_PERIPEDAL ((FIT_MANUFACTURER)72) -#define FIT_MANUFACTURER_WATTBIKE ((FIT_MANUFACTURER)73) -#define FIT_MANUFACTURER_MOXY ((FIT_MANUFACTURER)76) -#define FIT_MANUFACTURER_CICLOSPORT ((FIT_MANUFACTURER)77) -#define FIT_MANUFACTURER_POWERBAHN ((FIT_MANUFACTURER)78) -#define FIT_MANUFACTURER_ACORN_PROJECTS_APS ((FIT_MANUFACTURER)79) -#define FIT_MANUFACTURER_LIFEBEAM ((FIT_MANUFACTURER)80) -#define FIT_MANUFACTURER_BONTRAGER ((FIT_MANUFACTURER)81) -#define FIT_MANUFACTURER_WELLGO ((FIT_MANUFACTURER)82) -#define FIT_MANUFACTURER_SCOSCHE ((FIT_MANUFACTURER)83) -#define FIT_MANUFACTURER_MAGURA ((FIT_MANUFACTURER)84) -#define FIT_MANUFACTURER_WOODWAY ((FIT_MANUFACTURER)85) -#define FIT_MANUFACTURER_ELITE ((FIT_MANUFACTURER)86) -#define FIT_MANUFACTURER_NIELSEN_KELLERMAN ((FIT_MANUFACTURER)87) -#define FIT_MANUFACTURER_DK_CITY ((FIT_MANUFACTURER)88) -#define FIT_MANUFACTURER_TACX ((FIT_MANUFACTURER)89) -#define FIT_MANUFACTURER_DIRECTION_TECHNOLOGY ((FIT_MANUFACTURER)90) -#define FIT_MANUFACTURER_MAGTONIC ((FIT_MANUFACTURER)91) -#define FIT_MANUFACTURER_1PARTCARBON ((FIT_MANUFACTURER)92) -#define FIT_MANUFACTURER_INSIDE_RIDE_TECHNOLOGIES ((FIT_MANUFACTURER)93) -#define FIT_MANUFACTURER_SOUND_OF_MOTION ((FIT_MANUFACTURER)94) -#define FIT_MANUFACTURER_STRYD ((FIT_MANUFACTURER)95) -#define FIT_MANUFACTURER_ICG ((FIT_MANUFACTURER)96) // Indoorcycling Group -#define FIT_MANUFACTURER_MIPULSE ((FIT_MANUFACTURER)97) -#define FIT_MANUFACTURER_BSX_ATHLETICS ((FIT_MANUFACTURER)98) -#define FIT_MANUFACTURER_LOOK ((FIT_MANUFACTURER)99) -#define FIT_MANUFACTURER_CAMPAGNOLO_SRL ((FIT_MANUFACTURER)100) -#define FIT_MANUFACTURER_BODY_BIKE_SMART ((FIT_MANUFACTURER)101) -#define FIT_MANUFACTURER_PRAXISWORKS ((FIT_MANUFACTURER)102) -#define FIT_MANUFACTURER_LIMITS_TECHNOLOGY ((FIT_MANUFACTURER)103) // Limits Technology Ltd. -#define FIT_MANUFACTURER_TOPACTION_TECHNOLOGY ((FIT_MANUFACTURER)104) // TopAction Technology Inc. -#define FIT_MANUFACTURER_COSINUSS ((FIT_MANUFACTURER)105) -#define FIT_MANUFACTURER_FITCARE ((FIT_MANUFACTURER)106) -#define FIT_MANUFACTURER_MAGENE ((FIT_MANUFACTURER)107) -#define FIT_MANUFACTURER_GIANT_MANUFACTURING_CO ((FIT_MANUFACTURER)108) -#define FIT_MANUFACTURER_TIGRASPORT ((FIT_MANUFACTURER)109) // Tigrasport -#define FIT_MANUFACTURER_SALUTRON ((FIT_MANUFACTURER)110) -#define FIT_MANUFACTURER_TECHNOGYM ((FIT_MANUFACTURER)111) -#define FIT_MANUFACTURER_BRYTON_SENSORS ((FIT_MANUFACTURER)112) -#define FIT_MANUFACTURER_LATITUDE_LIMITED ((FIT_MANUFACTURER)113) -#define FIT_MANUFACTURER_SOARING_TECHNOLOGY ((FIT_MANUFACTURER)114) -#define FIT_MANUFACTURER_IGPSPORT ((FIT_MANUFACTURER)115) -#define FIT_MANUFACTURER_THINKRIDER ((FIT_MANUFACTURER)116) -#define FIT_MANUFACTURER_GOPHER_SPORT ((FIT_MANUFACTURER)117) -#define FIT_MANUFACTURER_WATERROWER ((FIT_MANUFACTURER)118) -#define FIT_MANUFACTURER_ORANGETHEORY ((FIT_MANUFACTURER)119) -#define FIT_MANUFACTURER_INPEAK ((FIT_MANUFACTURER)120) -#define FIT_MANUFACTURER_KINETIC ((FIT_MANUFACTURER)121) -#define FIT_MANUFACTURER_JOHNSON_HEALTH_TECH ((FIT_MANUFACTURER)122) -#define FIT_MANUFACTURER_POLAR_ELECTRO ((FIT_MANUFACTURER)123) -#define FIT_MANUFACTURER_SEESENSE ((FIT_MANUFACTURER)124) -#define FIT_MANUFACTURER_NCI_TECHNOLOGY ((FIT_MANUFACTURER)125) -#define FIT_MANUFACTURER_IQSQUARE ((FIT_MANUFACTURER)126) -#define FIT_MANUFACTURER_LEOMO ((FIT_MANUFACTURER)127) -#define FIT_MANUFACTURER_IFIT_COM ((FIT_MANUFACTURER)128) -#define FIT_MANUFACTURER_COROS_BYTE ((FIT_MANUFACTURER)129) -#define FIT_MANUFACTURER_VERSA_DESIGN ((FIT_MANUFACTURER)130) -#define FIT_MANUFACTURER_CHILEAF ((FIT_MANUFACTURER)131) -#define FIT_MANUFACTURER_CYCPLUS ((FIT_MANUFACTURER)132) + +typedef FIT_ENUM FIT_EVENT_TYPE; +#define FIT_EVENT_TYPE_INVALID FIT_ENUM_INVALID +#define FIT_EVENT_TYPE_START ((FIT_EVENT_TYPE)0) +#define FIT_EVENT_TYPE_STOP ((FIT_EVENT_TYPE)1) +#define FIT_EVENT_TYPE_CONSECUTIVE_DEPRECIATED ((FIT_EVENT_TYPE)2) +#define FIT_EVENT_TYPE_MARKER ((FIT_EVENT_TYPE)3) +#define FIT_EVENT_TYPE_STOP_ALL ((FIT_EVENT_TYPE)4) +#define FIT_EVENT_TYPE_BEGIN_DEPRECIATED ((FIT_EVENT_TYPE)5) +#define FIT_EVENT_TYPE_END_DEPRECIATED ((FIT_EVENT_TYPE)6) +#define FIT_EVENT_TYPE_END_ALL_DEPRECIATED ((FIT_EVENT_TYPE)7) +#define FIT_EVENT_TYPE_STOP_DISABLE ((FIT_EVENT_TYPE)8) +#define FIT_EVENT_TYPE_STOP_DISABLE_ALL ((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_TIMER_TRIGGER)0) +#define FIT_TIMER_TRIGGER_AUTO ((FIT_TIMER_TRIGGER)1) +#define FIT_TIMER_TRIGGER_FITNESS_EQUIPMENT ((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_FITNESS_EQUIPMENT_STATE)0) +#define FIT_FITNESS_EQUIPMENT_STATE_IN_USE ((FIT_FITNESS_EQUIPMENT_STATE)1) +#define FIT_FITNESS_EQUIPMENT_STATE_PAUSED ((FIT_FITNESS_EQUIPMENT_STATE)2) +#define FIT_FITNESS_EQUIPMENT_STATE_UNKNOWN ((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_TONE)0) +#define FIT_TONE_TONE ((FIT_TONE)1) +#define FIT_TONE_VIBRATE ((FIT_TONE)2) +#define FIT_TONE_TONE_AND_VIBRATE ((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_AUTOSCROLL)0) +#define FIT_AUTOSCROLL_SLOW ((FIT_AUTOSCROLL)1) +#define FIT_AUTOSCROLL_MEDIUM ((FIT_AUTOSCROLL)2) +#define FIT_AUTOSCROLL_FAST ((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_ACTIVITY_CLASS)0x7F) // 0 to 100 +#define FIT_ACTIVITY_CLASS_LEVEL_MAX ((FIT_ACTIVITY_CLASS)100) +#define FIT_ACTIVITY_CLASS_ATHLETE ((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_HR_ZONE_CALC)0) +#define FIT_HR_ZONE_CALC_PERCENT_MAX_HR ((FIT_HR_ZONE_CALC)1) +#define FIT_HR_ZONE_CALC_PERCENT_HRR ((FIT_HR_ZONE_CALC)2) +#define FIT_HR_ZONE_CALC_COUNT 3 + +typedef FIT_ENUM FIT_PWR_ZONE_CALC; +#define FIT_PWR_ZONE_CALC_INVALID FIT_ENUM_INVALID +#define FIT_PWR_ZONE_CALC_CUSTOM ((FIT_PWR_ZONE_CALC)0) +#define FIT_PWR_ZONE_CALC_PERCENT_FTP ((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_WKT_STEP_DURATION)0) +#define FIT_WKT_STEP_DURATION_DISTANCE ((FIT_WKT_STEP_DURATION)1) +#define FIT_WKT_STEP_DURATION_HR_LESS_THAN ((FIT_WKT_STEP_DURATION)2) +#define FIT_WKT_STEP_DURATION_HR_GREATER_THAN ((FIT_WKT_STEP_DURATION)3) +#define FIT_WKT_STEP_DURATION_CALORIES ((FIT_WKT_STEP_DURATION)4) +#define FIT_WKT_STEP_DURATION_OPEN ((FIT_WKT_STEP_DURATION)5) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_STEPS_CMPLT ((FIT_WKT_STEP_DURATION)6) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_TIME ((FIT_WKT_STEP_DURATION)7) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_DISTANCE ((FIT_WKT_STEP_DURATION)8) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_CALORIES ((FIT_WKT_STEP_DURATION)9) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_HR_LESS_THAN ((FIT_WKT_STEP_DURATION)10) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_HR_GREATER_THAN ((FIT_WKT_STEP_DURATION)11) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_LESS_THAN ((FIT_WKT_STEP_DURATION)12) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_GREATER_THAN ((FIT_WKT_STEP_DURATION)13) +#define FIT_WKT_STEP_DURATION_POWER_LESS_THAN ((FIT_WKT_STEP_DURATION)14) +#define FIT_WKT_STEP_DURATION_POWER_GREATER_THAN ((FIT_WKT_STEP_DURATION)15) +#define FIT_WKT_STEP_DURATION_TRAINING_PEAKS_TSS ((FIT_WKT_STEP_DURATION)16) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_POWER_LAST_LAP_LESS_THAN ((FIT_WKT_STEP_DURATION)17) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_MAX_POWER_LAST_LAP_LESS_THAN ((FIT_WKT_STEP_DURATION)18) +#define FIT_WKT_STEP_DURATION_POWER_3S_LESS_THAN ((FIT_WKT_STEP_DURATION)19) +#define FIT_WKT_STEP_DURATION_POWER_10S_LESS_THAN ((FIT_WKT_STEP_DURATION)20) +#define FIT_WKT_STEP_DURATION_POWER_30S_LESS_THAN ((FIT_WKT_STEP_DURATION)21) +#define FIT_WKT_STEP_DURATION_POWER_3S_GREATER_THAN ((FIT_WKT_STEP_DURATION)22) +#define FIT_WKT_STEP_DURATION_POWER_10S_GREATER_THAN ((FIT_WKT_STEP_DURATION)23) +#define FIT_WKT_STEP_DURATION_POWER_30S_GREATER_THAN ((FIT_WKT_STEP_DURATION)24) +#define FIT_WKT_STEP_DURATION_POWER_LAP_LESS_THAN ((FIT_WKT_STEP_DURATION)25) +#define FIT_WKT_STEP_DURATION_POWER_LAP_GREATER_THAN ((FIT_WKT_STEP_DURATION)26) +#define FIT_WKT_STEP_DURATION_REPEAT_UNTIL_TRAINING_PEAKS_TSS ((FIT_WKT_STEP_DURATION)27) +#define FIT_WKT_STEP_DURATION_REPETITION_TIME ((FIT_WKT_STEP_DURATION)28) +#define FIT_WKT_STEP_DURATION_REPS ((FIT_WKT_STEP_DURATION)29) +#define FIT_WKT_STEP_DURATION_TIME_ONLY ((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_WKT_STEP_TARGET)0) +#define FIT_WKT_STEP_TARGET_HEART_RATE ((FIT_WKT_STEP_TARGET)1) +#define FIT_WKT_STEP_TARGET_OPEN ((FIT_WKT_STEP_TARGET)2) +#define FIT_WKT_STEP_TARGET_CADENCE ((FIT_WKT_STEP_TARGET)3) +#define FIT_WKT_STEP_TARGET_POWER ((FIT_WKT_STEP_TARGET)4) +#define FIT_WKT_STEP_TARGET_GRADE ((FIT_WKT_STEP_TARGET)5) +#define FIT_WKT_STEP_TARGET_RESISTANCE ((FIT_WKT_STEP_TARGET)6) +#define FIT_WKT_STEP_TARGET_POWER_3S ((FIT_WKT_STEP_TARGET)7) +#define FIT_WKT_STEP_TARGET_POWER_10S ((FIT_WKT_STEP_TARGET)8) +#define FIT_WKT_STEP_TARGET_POWER_30S ((FIT_WKT_STEP_TARGET)9) +#define FIT_WKT_STEP_TARGET_POWER_LAP ((FIT_WKT_STEP_TARGET)10) +#define FIT_WKT_STEP_TARGET_SWIM_STROKE ((FIT_WKT_STEP_TARGET)11) +#define FIT_WKT_STEP_TARGET_SPEED_LAP ((FIT_WKT_STEP_TARGET)12) +#define FIT_WKT_STEP_TARGET_HEART_RATE_LAP ((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_GOAL)0) +#define FIT_GOAL_DISTANCE ((FIT_GOAL)1) +#define FIT_GOAL_CALORIES ((FIT_GOAL)2) +#define FIT_GOAL_FREQUENCY ((FIT_GOAL)3) +#define FIT_GOAL_STEPS ((FIT_GOAL)4) +#define FIT_GOAL_ASCENT ((FIT_GOAL)5) +#define FIT_GOAL_ACTIVE_MINUTES ((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_GOAL_RECURRENCE)0) +#define FIT_GOAL_RECURRENCE_DAILY ((FIT_GOAL_RECURRENCE)1) +#define FIT_GOAL_RECURRENCE_WEEKLY ((FIT_GOAL_RECURRENCE)2) +#define FIT_GOAL_RECURRENCE_MONTHLY ((FIT_GOAL_RECURRENCE)3) +#define FIT_GOAL_RECURRENCE_YEARLY ((FIT_GOAL_RECURRENCE)4) +#define FIT_GOAL_RECURRENCE_CUSTOM ((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_GOAL_SOURCE)0) // Device generated +#define FIT_GOAL_SOURCE_COMMUNITY ((FIT_GOAL_SOURCE)1) // Social network sourced goal +#define FIT_GOAL_SOURCE_USER ((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_SCHEDULE)0) +#define FIT_SCHEDULE_COURSE ((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_COURSE_POINT)0) +#define FIT_COURSE_POINT_SUMMIT ((FIT_COURSE_POINT)1) +#define FIT_COURSE_POINT_VALLEY ((FIT_COURSE_POINT)2) +#define FIT_COURSE_POINT_WATER ((FIT_COURSE_POINT)3) +#define FIT_COURSE_POINT_FOOD ((FIT_COURSE_POINT)4) +#define FIT_COURSE_POINT_DANGER ((FIT_COURSE_POINT)5) +#define FIT_COURSE_POINT_LEFT ((FIT_COURSE_POINT)6) +#define FIT_COURSE_POINT_RIGHT ((FIT_COURSE_POINT)7) +#define FIT_COURSE_POINT_STRAIGHT ((FIT_COURSE_POINT)8) +#define FIT_COURSE_POINT_FIRST_AID ((FIT_COURSE_POINT)9) +#define FIT_COURSE_POINT_FOURTH_CATEGORY ((FIT_COURSE_POINT)10) +#define FIT_COURSE_POINT_THIRD_CATEGORY ((FIT_COURSE_POINT)11) +#define FIT_COURSE_POINT_SECOND_CATEGORY ((FIT_COURSE_POINT)12) +#define FIT_COURSE_POINT_FIRST_CATEGORY ((FIT_COURSE_POINT)13) +#define FIT_COURSE_POINT_HORS_CATEGORY ((FIT_COURSE_POINT)14) +#define FIT_COURSE_POINT_SPRINT ((FIT_COURSE_POINT)15) +#define FIT_COURSE_POINT_LEFT_FORK ((FIT_COURSE_POINT)16) +#define FIT_COURSE_POINT_RIGHT_FORK ((FIT_COURSE_POINT)17) +#define FIT_COURSE_POINT_MIDDLE_FORK ((FIT_COURSE_POINT)18) +#define FIT_COURSE_POINT_SLIGHT_LEFT ((FIT_COURSE_POINT)19) +#define FIT_COURSE_POINT_SHARP_LEFT ((FIT_COURSE_POINT)20) +#define FIT_COURSE_POINT_SLIGHT_RIGHT ((FIT_COURSE_POINT)21) +#define FIT_COURSE_POINT_SHARP_RIGHT ((FIT_COURSE_POINT)22) +#define FIT_COURSE_POINT_U_TURN ((FIT_COURSE_POINT)23) +#define FIT_COURSE_POINT_SEGMENT_START ((FIT_COURSE_POINT)24) +#define FIT_COURSE_POINT_SEGMENT_END ((FIT_COURSE_POINT)25) +#define FIT_COURSE_POINT_COUNT 26 + +typedef FIT_UINT16 FIT_MANUFACTURER; +#define FIT_MANUFACTURER_INVALID FIT_UINT16_INVALID +#define FIT_MANUFACTURER_GARMIN ((FIT_MANUFACTURER)1) +#define FIT_MANUFACTURER_GARMIN_FR405_ANTFS ((FIT_MANUFACTURER)2) // Do not use. Used by FR405 for ANTFS man id. +#define FIT_MANUFACTURER_ZEPHYR ((FIT_MANUFACTURER)3) +#define FIT_MANUFACTURER_DAYTON ((FIT_MANUFACTURER)4) +#define FIT_MANUFACTURER_IDT ((FIT_MANUFACTURER)5) +#define FIT_MANUFACTURER_SRM ((FIT_MANUFACTURER)6) +#define FIT_MANUFACTURER_QUARQ ((FIT_MANUFACTURER)7) +#define FIT_MANUFACTURER_IBIKE ((FIT_MANUFACTURER)8) +#define FIT_MANUFACTURER_SARIS ((FIT_MANUFACTURER)9) +#define FIT_MANUFACTURER_SPARK_HK ((FIT_MANUFACTURER)10) +#define FIT_MANUFACTURER_TANITA ((FIT_MANUFACTURER)11) +#define FIT_MANUFACTURER_ECHOWELL ((FIT_MANUFACTURER)12) +#define FIT_MANUFACTURER_DYNASTREAM_OEM ((FIT_MANUFACTURER)13) +#define FIT_MANUFACTURER_NAUTILUS ((FIT_MANUFACTURER)14) +#define FIT_MANUFACTURER_DYNASTREAM ((FIT_MANUFACTURER)15) +#define FIT_MANUFACTURER_TIMEX ((FIT_MANUFACTURER)16) +#define FIT_MANUFACTURER_METRIGEAR ((FIT_MANUFACTURER)17) +#define FIT_MANUFACTURER_XELIC ((FIT_MANUFACTURER)18) +#define FIT_MANUFACTURER_BEURER ((FIT_MANUFACTURER)19) +#define FIT_MANUFACTURER_CARDIOSPORT ((FIT_MANUFACTURER)20) +#define FIT_MANUFACTURER_A_AND_D ((FIT_MANUFACTURER)21) +#define FIT_MANUFACTURER_HMM ((FIT_MANUFACTURER)22) +#define FIT_MANUFACTURER_SUUNTO ((FIT_MANUFACTURER)23) +#define FIT_MANUFACTURER_THITA_ELEKTRONIK ((FIT_MANUFACTURER)24) +#define FIT_MANUFACTURER_GPULSE ((FIT_MANUFACTURER)25) +#define FIT_MANUFACTURER_CLEAN_MOBILE ((FIT_MANUFACTURER)26) +#define FIT_MANUFACTURER_PEDAL_BRAIN ((FIT_MANUFACTURER)27) +#define FIT_MANUFACTURER_PEAKSWARE ((FIT_MANUFACTURER)28) +#define FIT_MANUFACTURER_SAXONAR ((FIT_MANUFACTURER)29) +#define FIT_MANUFACTURER_LEMOND_FITNESS ((FIT_MANUFACTURER)30) +#define FIT_MANUFACTURER_DEXCOM ((FIT_MANUFACTURER)31) +#define FIT_MANUFACTURER_WAHOO_FITNESS ((FIT_MANUFACTURER)32) +#define FIT_MANUFACTURER_OCTANE_FITNESS ((FIT_MANUFACTURER)33) +#define FIT_MANUFACTURER_ARCHINOETICS ((FIT_MANUFACTURER)34) +#define FIT_MANUFACTURER_THE_HURT_BOX ((FIT_MANUFACTURER)35) +#define FIT_MANUFACTURER_CITIZEN_SYSTEMS ((FIT_MANUFACTURER)36) +#define FIT_MANUFACTURER_MAGELLAN ((FIT_MANUFACTURER)37) +#define FIT_MANUFACTURER_OSYNCE ((FIT_MANUFACTURER)38) +#define FIT_MANUFACTURER_HOLUX ((FIT_MANUFACTURER)39) +#define FIT_MANUFACTURER_CONCEPT2 ((FIT_MANUFACTURER)40) +#define FIT_MANUFACTURER_ONE_GIANT_LEAP ((FIT_MANUFACTURER)42) +#define FIT_MANUFACTURER_ACE_SENSOR ((FIT_MANUFACTURER)43) +#define FIT_MANUFACTURER_BRIM_BROTHERS ((FIT_MANUFACTURER)44) +#define FIT_MANUFACTURER_XPLOVA ((FIT_MANUFACTURER)45) +#define FIT_MANUFACTURER_PERCEPTION_DIGITAL ((FIT_MANUFACTURER)46) +#define FIT_MANUFACTURER_BF1SYSTEMS ((FIT_MANUFACTURER)47) +#define FIT_MANUFACTURER_PIONEER ((FIT_MANUFACTURER)48) +#define FIT_MANUFACTURER_SPANTEC ((FIT_MANUFACTURER)49) +#define FIT_MANUFACTURER_METALOGICS ((FIT_MANUFACTURER)50) +#define FIT_MANUFACTURER_4IIIIS ((FIT_MANUFACTURER)51) +#define FIT_MANUFACTURER_SEIKO_EPSON ((FIT_MANUFACTURER)52) +#define FIT_MANUFACTURER_SEIKO_EPSON_OEM ((FIT_MANUFACTURER)53) +#define FIT_MANUFACTURER_IFOR_POWELL ((FIT_MANUFACTURER)54) +#define FIT_MANUFACTURER_MAXWELL_GUIDER ((FIT_MANUFACTURER)55) +#define FIT_MANUFACTURER_STAR_TRAC ((FIT_MANUFACTURER)56) +#define FIT_MANUFACTURER_BREAKAWAY ((FIT_MANUFACTURER)57) +#define FIT_MANUFACTURER_ALATECH_TECHNOLOGY_LTD ((FIT_MANUFACTURER)58) +#define FIT_MANUFACTURER_MIO_TECHNOLOGY_EUROPE ((FIT_MANUFACTURER)59) +#define FIT_MANUFACTURER_ROTOR ((FIT_MANUFACTURER)60) +#define FIT_MANUFACTURER_GEONAUTE ((FIT_MANUFACTURER)61) +#define FIT_MANUFACTURER_ID_BIKE ((FIT_MANUFACTURER)62) +#define FIT_MANUFACTURER_SPECIALIZED ((FIT_MANUFACTURER)63) +#define FIT_MANUFACTURER_WTEK ((FIT_MANUFACTURER)64) +#define FIT_MANUFACTURER_PHYSICAL_ENTERPRISES ((FIT_MANUFACTURER)65) +#define FIT_MANUFACTURER_NORTH_POLE_ENGINEERING ((FIT_MANUFACTURER)66) +#define FIT_MANUFACTURER_BKOOL ((FIT_MANUFACTURER)67) +#define FIT_MANUFACTURER_CATEYE ((FIT_MANUFACTURER)68) +#define FIT_MANUFACTURER_STAGES_CYCLING ((FIT_MANUFACTURER)69) +#define FIT_MANUFACTURER_SIGMASPORT ((FIT_MANUFACTURER)70) +#define FIT_MANUFACTURER_TOMTOM ((FIT_MANUFACTURER)71) +#define FIT_MANUFACTURER_PERIPEDAL ((FIT_MANUFACTURER)72) +#define FIT_MANUFACTURER_WATTBIKE ((FIT_MANUFACTURER)73) +#define FIT_MANUFACTURER_MOXY ((FIT_MANUFACTURER)76) +#define FIT_MANUFACTURER_CICLOSPORT ((FIT_MANUFACTURER)77) +#define FIT_MANUFACTURER_POWERBAHN ((FIT_MANUFACTURER)78) +#define FIT_MANUFACTURER_ACORN_PROJECTS_APS ((FIT_MANUFACTURER)79) +#define FIT_MANUFACTURER_LIFEBEAM ((FIT_MANUFACTURER)80) +#define FIT_MANUFACTURER_BONTRAGER ((FIT_MANUFACTURER)81) +#define FIT_MANUFACTURER_WELLGO ((FIT_MANUFACTURER)82) +#define FIT_MANUFACTURER_SCOSCHE ((FIT_MANUFACTURER)83) +#define FIT_MANUFACTURER_MAGURA ((FIT_MANUFACTURER)84) +#define FIT_MANUFACTURER_WOODWAY ((FIT_MANUFACTURER)85) +#define FIT_MANUFACTURER_ELITE ((FIT_MANUFACTURER)86) +#define FIT_MANUFACTURER_NIELSEN_KELLERMAN ((FIT_MANUFACTURER)87) +#define FIT_MANUFACTURER_DK_CITY ((FIT_MANUFACTURER)88) +#define FIT_MANUFACTURER_TACX ((FIT_MANUFACTURER)89) +#define FIT_MANUFACTURER_DIRECTION_TECHNOLOGY ((FIT_MANUFACTURER)90) +#define FIT_MANUFACTURER_MAGTONIC ((FIT_MANUFACTURER)91) +#define FIT_MANUFACTURER_1PARTCARBON ((FIT_MANUFACTURER)92) +#define FIT_MANUFACTURER_INSIDE_RIDE_TECHNOLOGIES ((FIT_MANUFACTURER)93) +#define FIT_MANUFACTURER_SOUND_OF_MOTION ((FIT_MANUFACTURER)94) +#define FIT_MANUFACTURER_STRYD ((FIT_MANUFACTURER)95) +#define FIT_MANUFACTURER_ICG ((FIT_MANUFACTURER)96) // Indoorcycling Group +#define FIT_MANUFACTURER_MIPULSE ((FIT_MANUFACTURER)97) +#define FIT_MANUFACTURER_BSX_ATHLETICS ((FIT_MANUFACTURER)98) +#define FIT_MANUFACTURER_LOOK ((FIT_MANUFACTURER)99) +#define FIT_MANUFACTURER_CAMPAGNOLO_SRL ((FIT_MANUFACTURER)100) +#define FIT_MANUFACTURER_BODY_BIKE_SMART ((FIT_MANUFACTURER)101) +#define FIT_MANUFACTURER_PRAXISWORKS ((FIT_MANUFACTURER)102) +#define FIT_MANUFACTURER_LIMITS_TECHNOLOGY ((FIT_MANUFACTURER)103) // Limits Technology Ltd. +#define FIT_MANUFACTURER_TOPACTION_TECHNOLOGY ((FIT_MANUFACTURER)104) // TopAction Technology Inc. +#define FIT_MANUFACTURER_COSINUSS ((FIT_MANUFACTURER)105) +#define FIT_MANUFACTURER_FITCARE ((FIT_MANUFACTURER)106) +#define FIT_MANUFACTURER_MAGENE ((FIT_MANUFACTURER)107) +#define FIT_MANUFACTURER_GIANT_MANUFACTURING_CO ((FIT_MANUFACTURER)108) +#define FIT_MANUFACTURER_TIGRASPORT ((FIT_MANUFACTURER)109) // Tigrasport +#define FIT_MANUFACTURER_SALUTRON ((FIT_MANUFACTURER)110) +#define FIT_MANUFACTURER_TECHNOGYM ((FIT_MANUFACTURER)111) +#define FIT_MANUFACTURER_BRYTON_SENSORS ((FIT_MANUFACTURER)112) +#define FIT_MANUFACTURER_LATITUDE_LIMITED ((FIT_MANUFACTURER)113) +#define FIT_MANUFACTURER_SOARING_TECHNOLOGY ((FIT_MANUFACTURER)114) +#define FIT_MANUFACTURER_IGPSPORT ((FIT_MANUFACTURER)115) +#define FIT_MANUFACTURER_THINKRIDER ((FIT_MANUFACTURER)116) +#define FIT_MANUFACTURER_GOPHER_SPORT ((FIT_MANUFACTURER)117) +#define FIT_MANUFACTURER_WATERROWER ((FIT_MANUFACTURER)118) +#define FIT_MANUFACTURER_ORANGETHEORY ((FIT_MANUFACTURER)119) +#define FIT_MANUFACTURER_INPEAK ((FIT_MANUFACTURER)120) +#define FIT_MANUFACTURER_KINETIC ((FIT_MANUFACTURER)121) +#define FIT_MANUFACTURER_JOHNSON_HEALTH_TECH ((FIT_MANUFACTURER)122) +#define FIT_MANUFACTURER_POLAR_ELECTRO ((FIT_MANUFACTURER)123) +#define FIT_MANUFACTURER_SEESENSE ((FIT_MANUFACTURER)124) +#define FIT_MANUFACTURER_NCI_TECHNOLOGY ((FIT_MANUFACTURER)125) +#define FIT_MANUFACTURER_IQSQUARE ((FIT_MANUFACTURER)126) +#define FIT_MANUFACTURER_LEOMO ((FIT_MANUFACTURER)127) +#define FIT_MANUFACTURER_IFIT_COM ((FIT_MANUFACTURER)128) +#define FIT_MANUFACTURER_COROS_BYTE ((FIT_MANUFACTURER)129) +#define FIT_MANUFACTURER_VERSA_DESIGN ((FIT_MANUFACTURER)130) +#define FIT_MANUFACTURER_CHILEAF ((FIT_MANUFACTURER)131) +#define FIT_MANUFACTURER_CYCPLUS ((FIT_MANUFACTURER)132) #define FIT_MANUFACTURER_GRAVAA_BYTE ((FIT_MANUFACTURER)133) -#define FIT_MANUFACTURER_DEVELOPMENT ((FIT_MANUFACTURER)255) -#define FIT_MANUFACTURER_HEALTHANDLIFE ((FIT_MANUFACTURER)257) -#define FIT_MANUFACTURER_LEZYNE ((FIT_MANUFACTURER)258) -#define FIT_MANUFACTURER_SCRIBE_LABS ((FIT_MANUFACTURER)259) -#define FIT_MANUFACTURER_ZWIFT ((FIT_MANUFACTURER)260) -#define FIT_MANUFACTURER_WATTEAM ((FIT_MANUFACTURER)261) -#define FIT_MANUFACTURER_RECON ((FIT_MANUFACTURER)262) -#define FIT_MANUFACTURER_FAVERO_ELECTRONICS ((FIT_MANUFACTURER)263) -#define FIT_MANUFACTURER_DYNOVELO ((FIT_MANUFACTURER)264) -#define FIT_MANUFACTURER_STRAVA ((FIT_MANUFACTURER)265) -#define FIT_MANUFACTURER_PRECOR ((FIT_MANUFACTURER)266) // Amer Sports -#define FIT_MANUFACTURER_BRYTON ((FIT_MANUFACTURER)267) -#define FIT_MANUFACTURER_SRAM ((FIT_MANUFACTURER)268) -#define FIT_MANUFACTURER_NAVMAN ((FIT_MANUFACTURER)269) // MiTAC Global Corporation (Mio Technology) -#define FIT_MANUFACTURER_COBI ((FIT_MANUFACTURER)270) // COBI GmbH -#define FIT_MANUFACTURER_SPIVI ((FIT_MANUFACTURER)271) -#define FIT_MANUFACTURER_MIO_MAGELLAN ((FIT_MANUFACTURER)272) -#define FIT_MANUFACTURER_EVESPORTS ((FIT_MANUFACTURER)273) -#define FIT_MANUFACTURER_SENSITIVUS_GAUGE ((FIT_MANUFACTURER)274) -#define FIT_MANUFACTURER_PODOON ((FIT_MANUFACTURER)275) -#define FIT_MANUFACTURER_LIFE_TIME_FITNESS ((FIT_MANUFACTURER)276) -#define FIT_MANUFACTURER_FALCO_E_MOTORS ((FIT_MANUFACTURER)277) // Falco eMotors Inc. -#define FIT_MANUFACTURER_MINOURA ((FIT_MANUFACTURER)278) -#define FIT_MANUFACTURER_CYCLIQ ((FIT_MANUFACTURER)279) -#define FIT_MANUFACTURER_LUXOTTICA ((FIT_MANUFACTURER)280) -#define FIT_MANUFACTURER_TRAINER_ROAD ((FIT_MANUFACTURER)281) -#define FIT_MANUFACTURER_THE_SUFFERFEST ((FIT_MANUFACTURER)282) -#define FIT_MANUFACTURER_FULLSPEEDAHEAD ((FIT_MANUFACTURER)283) -#define FIT_MANUFACTURER_VIRTUALTRAINING ((FIT_MANUFACTURER)284) -#define FIT_MANUFACTURER_FEEDBACKSPORTS ((FIT_MANUFACTURER)285) -#define FIT_MANUFACTURER_OMATA ((FIT_MANUFACTURER)286) -#define FIT_MANUFACTURER_VDO ((FIT_MANUFACTURER)287) -#define FIT_MANUFACTURER_MAGNETICDAYS ((FIT_MANUFACTURER)288) -#define FIT_MANUFACTURER_HAMMERHEAD ((FIT_MANUFACTURER)289) -#define FIT_MANUFACTURER_KINETIC_BY_KURT ((FIT_MANUFACTURER)290) -#define FIT_MANUFACTURER_SHAPELOG ((FIT_MANUFACTURER)291) -#define FIT_MANUFACTURER_DABUZIDUO ((FIT_MANUFACTURER)292) -#define FIT_MANUFACTURER_JETBLACK ((FIT_MANUFACTURER)293) -#define FIT_MANUFACTURER_COROS ((FIT_MANUFACTURER)294) -#define FIT_MANUFACTURER_VIRTUGO ((FIT_MANUFACTURER)295) -#define FIT_MANUFACTURER_VELOSENSE ((FIT_MANUFACTURER)296) -#define FIT_MANUFACTURER_CYCLIGENTINC ((FIT_MANUFACTURER)297) -#define FIT_MANUFACTURER_TRAILFORKS ((FIT_MANUFACTURER)298) -#define FIT_MANUFACTURER_MAHLE_EBIKEMOTION ((FIT_MANUFACTURER)299) -#define FIT_MANUFACTURER_NURVV ((FIT_MANUFACTURER)300) -#define FIT_MANUFACTURER_MICROPROGRAM ((FIT_MANUFACTURER)301) +#define FIT_MANUFACTURER_DEVELOPMENT ((FIT_MANUFACTURER)255) +#define FIT_MANUFACTURER_HEALTHANDLIFE ((FIT_MANUFACTURER)257) +#define FIT_MANUFACTURER_LEZYNE ((FIT_MANUFACTURER)258) +#define FIT_MANUFACTURER_SCRIBE_LABS ((FIT_MANUFACTURER)259) +#define FIT_MANUFACTURER_ZWIFT ((FIT_MANUFACTURER)260) +#define FIT_MANUFACTURER_WATTEAM ((FIT_MANUFACTURER)261) +#define FIT_MANUFACTURER_RECON ((FIT_MANUFACTURER)262) +#define FIT_MANUFACTURER_FAVERO_ELECTRONICS ((FIT_MANUFACTURER)263) +#define FIT_MANUFACTURER_DYNOVELO ((FIT_MANUFACTURER)264) +#define FIT_MANUFACTURER_STRAVA ((FIT_MANUFACTURER)265) +#define FIT_MANUFACTURER_PRECOR ((FIT_MANUFACTURER)266) // Amer Sports +#define FIT_MANUFACTURER_BRYTON ((FIT_MANUFACTURER)267) +#define FIT_MANUFACTURER_SRAM ((FIT_MANUFACTURER)268) +#define FIT_MANUFACTURER_NAVMAN ((FIT_MANUFACTURER)269) // MiTAC Global Corporation (Mio Technology) +#define FIT_MANUFACTURER_COBI ((FIT_MANUFACTURER)270) // COBI GmbH +#define FIT_MANUFACTURER_SPIVI ((FIT_MANUFACTURER)271) +#define FIT_MANUFACTURER_MIO_MAGELLAN ((FIT_MANUFACTURER)272) +#define FIT_MANUFACTURER_EVESPORTS ((FIT_MANUFACTURER)273) +#define FIT_MANUFACTURER_SENSITIVUS_GAUGE ((FIT_MANUFACTURER)274) +#define FIT_MANUFACTURER_PODOON ((FIT_MANUFACTURER)275) +#define FIT_MANUFACTURER_LIFE_TIME_FITNESS ((FIT_MANUFACTURER)276) +#define FIT_MANUFACTURER_FALCO_E_MOTORS ((FIT_MANUFACTURER)277) // Falco eMotors Inc. +#define FIT_MANUFACTURER_MINOURA ((FIT_MANUFACTURER)278) +#define FIT_MANUFACTURER_CYCLIQ ((FIT_MANUFACTURER)279) +#define FIT_MANUFACTURER_LUXOTTICA ((FIT_MANUFACTURER)280) +#define FIT_MANUFACTURER_TRAINER_ROAD ((FIT_MANUFACTURER)281) +#define FIT_MANUFACTURER_THE_SUFFERFEST ((FIT_MANUFACTURER)282) +#define FIT_MANUFACTURER_FULLSPEEDAHEAD ((FIT_MANUFACTURER)283) +#define FIT_MANUFACTURER_VIRTUALTRAINING ((FIT_MANUFACTURER)284) +#define FIT_MANUFACTURER_FEEDBACKSPORTS ((FIT_MANUFACTURER)285) +#define FIT_MANUFACTURER_OMATA ((FIT_MANUFACTURER)286) +#define FIT_MANUFACTURER_VDO ((FIT_MANUFACTURER)287) +#define FIT_MANUFACTURER_MAGNETICDAYS ((FIT_MANUFACTURER)288) +#define FIT_MANUFACTURER_HAMMERHEAD ((FIT_MANUFACTURER)289) +#define FIT_MANUFACTURER_KINETIC_BY_KURT ((FIT_MANUFACTURER)290) +#define FIT_MANUFACTURER_SHAPELOG ((FIT_MANUFACTURER)291) +#define FIT_MANUFACTURER_DABUZIDUO ((FIT_MANUFACTURER)292) +#define FIT_MANUFACTURER_JETBLACK ((FIT_MANUFACTURER)293) +#define FIT_MANUFACTURER_COROS ((FIT_MANUFACTURER)294) +#define FIT_MANUFACTURER_VIRTUGO ((FIT_MANUFACTURER)295) +#define FIT_MANUFACTURER_VELOSENSE ((FIT_MANUFACTURER)296) +#define FIT_MANUFACTURER_CYCLIGENTINC ((FIT_MANUFACTURER)297) +#define FIT_MANUFACTURER_TRAILFORKS ((FIT_MANUFACTURER)298) +#define FIT_MANUFACTURER_MAHLE_EBIKEMOTION ((FIT_MANUFACTURER)299) +#define FIT_MANUFACTURER_NURVV ((FIT_MANUFACTURER)300) +#define FIT_MANUFACTURER_MICROPROGRAM ((FIT_MANUFACTURER)301) #define FIT_MANUFACTURER_ZONE5CLOUD ((FIT_MANUFACTURER)302) #define FIT_MANUFACTURER_GREENTEG ((FIT_MANUFACTURER)303) #define FIT_MANUFACTURER_YAMAHA_MOTORS ((FIT_MANUFACTURER)304) @@ -1185,255 +1185,255 @@ typedef FIT_UINT16 FIT_MANUFACTURER; #define FIT_MANUFACTURER_ONELAP ((FIT_MANUFACTURER)307) #define FIT_MANUFACTURER_MONARK_EXERCISE ((FIT_MANUFACTURER)308) #define FIT_MANUFACTURER_FORM ((FIT_MANUFACTURER)309) -#define FIT_MANUFACTURER_ACTIGRAPHCORP ((FIT_MANUFACTURER)5759) +#define FIT_MANUFACTURER_ACTIGRAPHCORP ((FIT_MANUFACTURER)5759) #define FIT_MANUFACTURER_COUNT 185 - -typedef FIT_UINT16 FIT_GARMIN_PRODUCT; -#define FIT_GARMIN_PRODUCT_INVALID FIT_UINT16_INVALID -#define FIT_GARMIN_PRODUCT_HRM1 ((FIT_GARMIN_PRODUCT)1) -#define FIT_GARMIN_PRODUCT_AXH01 ((FIT_GARMIN_PRODUCT)2) // AXH01 HRM chipset -#define FIT_GARMIN_PRODUCT_AXB01 ((FIT_GARMIN_PRODUCT)3) -#define FIT_GARMIN_PRODUCT_AXB02 ((FIT_GARMIN_PRODUCT)4) -#define FIT_GARMIN_PRODUCT_HRM2SS ((FIT_GARMIN_PRODUCT)5) -#define FIT_GARMIN_PRODUCT_DSI_ALF02 ((FIT_GARMIN_PRODUCT)6) -#define FIT_GARMIN_PRODUCT_HRM3SS ((FIT_GARMIN_PRODUCT)7) -#define FIT_GARMIN_PRODUCT_HRM_RUN_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)8) // hrm_run model for HRM ANT+ messaging -#define FIT_GARMIN_PRODUCT_BSM ((FIT_GARMIN_PRODUCT)9) // BSM model for ANT+ messaging -#define FIT_GARMIN_PRODUCT_BCM ((FIT_GARMIN_PRODUCT)10) // BCM model for ANT+ messaging -#define FIT_GARMIN_PRODUCT_AXS01 ((FIT_GARMIN_PRODUCT)11) // AXS01 HRM Bike Chipset model for ANT+ messaging -#define FIT_GARMIN_PRODUCT_HRM_TRI_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)12) // hrm_tri model for HRM ANT+ messaging + +typedef FIT_UINT16 FIT_GARMIN_PRODUCT; +#define FIT_GARMIN_PRODUCT_INVALID FIT_UINT16_INVALID +#define FIT_GARMIN_PRODUCT_HRM1 ((FIT_GARMIN_PRODUCT)1) +#define FIT_GARMIN_PRODUCT_AXH01 ((FIT_GARMIN_PRODUCT)2) // AXH01 HRM chipset +#define FIT_GARMIN_PRODUCT_AXB01 ((FIT_GARMIN_PRODUCT)3) +#define FIT_GARMIN_PRODUCT_AXB02 ((FIT_GARMIN_PRODUCT)4) +#define FIT_GARMIN_PRODUCT_HRM2SS ((FIT_GARMIN_PRODUCT)5) +#define FIT_GARMIN_PRODUCT_DSI_ALF02 ((FIT_GARMIN_PRODUCT)6) +#define FIT_GARMIN_PRODUCT_HRM3SS ((FIT_GARMIN_PRODUCT)7) +#define FIT_GARMIN_PRODUCT_HRM_RUN_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)8) // hrm_run model for HRM ANT+ messaging +#define FIT_GARMIN_PRODUCT_BSM ((FIT_GARMIN_PRODUCT)9) // BSM model for ANT+ messaging +#define FIT_GARMIN_PRODUCT_BCM ((FIT_GARMIN_PRODUCT)10) // BCM model for ANT+ messaging +#define FIT_GARMIN_PRODUCT_AXS01 ((FIT_GARMIN_PRODUCT)11) // AXS01 HRM Bike Chipset model for ANT+ messaging +#define FIT_GARMIN_PRODUCT_HRM_TRI_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)12) // hrm_tri model for HRM ANT+ messaging #define FIT_GARMIN_PRODUCT_HRM4_RUN_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)13) // hrm4 run model for HRM ANT+ messaging -#define FIT_GARMIN_PRODUCT_FR225_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)14) // fr225 model for HRM ANT+ messaging +#define FIT_GARMIN_PRODUCT_FR225_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)14) // fr225 model for HRM ANT+ messaging #define FIT_GARMIN_PRODUCT_GEN3_BSM_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)15) // gen3_bsm model for Bike Speed ANT+ messaging #define FIT_GARMIN_PRODUCT_GEN3_BCM_SINGLE_BYTE_PRODUCT_ID ((FIT_GARMIN_PRODUCT)16) // gen3_bcm model for Bike Cadence ANT+ messaging -#define FIT_GARMIN_PRODUCT_FR301_CHINA ((FIT_GARMIN_PRODUCT)473) -#define FIT_GARMIN_PRODUCT_FR301_JAPAN ((FIT_GARMIN_PRODUCT)474) -#define FIT_GARMIN_PRODUCT_FR301_KOREA ((FIT_GARMIN_PRODUCT)475) -#define FIT_GARMIN_PRODUCT_FR301_TAIWAN ((FIT_GARMIN_PRODUCT)494) -#define FIT_GARMIN_PRODUCT_FR405 ((FIT_GARMIN_PRODUCT)717) // Forerunner 405 -#define FIT_GARMIN_PRODUCT_FR50 ((FIT_GARMIN_PRODUCT)782) // Forerunner 50 -#define FIT_GARMIN_PRODUCT_FR405_JAPAN ((FIT_GARMIN_PRODUCT)987) -#define FIT_GARMIN_PRODUCT_FR60 ((FIT_GARMIN_PRODUCT)988) // Forerunner 60 -#define FIT_GARMIN_PRODUCT_DSI_ALF01 ((FIT_GARMIN_PRODUCT)1011) -#define FIT_GARMIN_PRODUCT_FR310XT ((FIT_GARMIN_PRODUCT)1018) // Forerunner 310 -#define FIT_GARMIN_PRODUCT_EDGE500 ((FIT_GARMIN_PRODUCT)1036) -#define FIT_GARMIN_PRODUCT_FR110 ((FIT_GARMIN_PRODUCT)1124) // Forerunner 110 -#define FIT_GARMIN_PRODUCT_EDGE800 ((FIT_GARMIN_PRODUCT)1169) -#define FIT_GARMIN_PRODUCT_EDGE500_TAIWAN ((FIT_GARMIN_PRODUCT)1199) -#define FIT_GARMIN_PRODUCT_EDGE500_JAPAN ((FIT_GARMIN_PRODUCT)1213) -#define FIT_GARMIN_PRODUCT_CHIRP ((FIT_GARMIN_PRODUCT)1253) -#define FIT_GARMIN_PRODUCT_FR110_JAPAN ((FIT_GARMIN_PRODUCT)1274) -#define FIT_GARMIN_PRODUCT_EDGE200 ((FIT_GARMIN_PRODUCT)1325) -#define FIT_GARMIN_PRODUCT_FR910XT ((FIT_GARMIN_PRODUCT)1328) -#define FIT_GARMIN_PRODUCT_EDGE800_TAIWAN ((FIT_GARMIN_PRODUCT)1333) -#define FIT_GARMIN_PRODUCT_EDGE800_JAPAN ((FIT_GARMIN_PRODUCT)1334) -#define FIT_GARMIN_PRODUCT_ALF04 ((FIT_GARMIN_PRODUCT)1341) -#define FIT_GARMIN_PRODUCT_FR610 ((FIT_GARMIN_PRODUCT)1345) -#define FIT_GARMIN_PRODUCT_FR210_JAPAN ((FIT_GARMIN_PRODUCT)1360) -#define FIT_GARMIN_PRODUCT_VECTOR_SS ((FIT_GARMIN_PRODUCT)1380) -#define FIT_GARMIN_PRODUCT_VECTOR_CP ((FIT_GARMIN_PRODUCT)1381) -#define FIT_GARMIN_PRODUCT_EDGE800_CHINA ((FIT_GARMIN_PRODUCT)1386) -#define FIT_GARMIN_PRODUCT_EDGE500_CHINA ((FIT_GARMIN_PRODUCT)1387) +#define FIT_GARMIN_PRODUCT_FR301_CHINA ((FIT_GARMIN_PRODUCT)473) +#define FIT_GARMIN_PRODUCT_FR301_JAPAN ((FIT_GARMIN_PRODUCT)474) +#define FIT_GARMIN_PRODUCT_FR301_KOREA ((FIT_GARMIN_PRODUCT)475) +#define FIT_GARMIN_PRODUCT_FR301_TAIWAN ((FIT_GARMIN_PRODUCT)494) +#define FIT_GARMIN_PRODUCT_FR405 ((FIT_GARMIN_PRODUCT)717) // Forerunner 405 +#define FIT_GARMIN_PRODUCT_FR50 ((FIT_GARMIN_PRODUCT)782) // Forerunner 50 +#define FIT_GARMIN_PRODUCT_FR405_JAPAN ((FIT_GARMIN_PRODUCT)987) +#define FIT_GARMIN_PRODUCT_FR60 ((FIT_GARMIN_PRODUCT)988) // Forerunner 60 +#define FIT_GARMIN_PRODUCT_DSI_ALF01 ((FIT_GARMIN_PRODUCT)1011) +#define FIT_GARMIN_PRODUCT_FR310XT ((FIT_GARMIN_PRODUCT)1018) // Forerunner 310 +#define FIT_GARMIN_PRODUCT_EDGE500 ((FIT_GARMIN_PRODUCT)1036) +#define FIT_GARMIN_PRODUCT_FR110 ((FIT_GARMIN_PRODUCT)1124) // Forerunner 110 +#define FIT_GARMIN_PRODUCT_EDGE800 ((FIT_GARMIN_PRODUCT)1169) +#define FIT_GARMIN_PRODUCT_EDGE500_TAIWAN ((FIT_GARMIN_PRODUCT)1199) +#define FIT_GARMIN_PRODUCT_EDGE500_JAPAN ((FIT_GARMIN_PRODUCT)1213) +#define FIT_GARMIN_PRODUCT_CHIRP ((FIT_GARMIN_PRODUCT)1253) +#define FIT_GARMIN_PRODUCT_FR110_JAPAN ((FIT_GARMIN_PRODUCT)1274) +#define FIT_GARMIN_PRODUCT_EDGE200 ((FIT_GARMIN_PRODUCT)1325) +#define FIT_GARMIN_PRODUCT_FR910XT ((FIT_GARMIN_PRODUCT)1328) +#define FIT_GARMIN_PRODUCT_EDGE800_TAIWAN ((FIT_GARMIN_PRODUCT)1333) +#define FIT_GARMIN_PRODUCT_EDGE800_JAPAN ((FIT_GARMIN_PRODUCT)1334) +#define FIT_GARMIN_PRODUCT_ALF04 ((FIT_GARMIN_PRODUCT)1341) +#define FIT_GARMIN_PRODUCT_FR610 ((FIT_GARMIN_PRODUCT)1345) +#define FIT_GARMIN_PRODUCT_FR210_JAPAN ((FIT_GARMIN_PRODUCT)1360) +#define FIT_GARMIN_PRODUCT_VECTOR_SS ((FIT_GARMIN_PRODUCT)1380) +#define FIT_GARMIN_PRODUCT_VECTOR_CP ((FIT_GARMIN_PRODUCT)1381) +#define FIT_GARMIN_PRODUCT_EDGE800_CHINA ((FIT_GARMIN_PRODUCT)1386) +#define FIT_GARMIN_PRODUCT_EDGE500_CHINA ((FIT_GARMIN_PRODUCT)1387) #define FIT_GARMIN_PRODUCT_APPROACH_G10 ((FIT_GARMIN_PRODUCT)1405) -#define FIT_GARMIN_PRODUCT_FR610_JAPAN ((FIT_GARMIN_PRODUCT)1410) -#define FIT_GARMIN_PRODUCT_EDGE500_KOREA ((FIT_GARMIN_PRODUCT)1422) -#define FIT_GARMIN_PRODUCT_FR70 ((FIT_GARMIN_PRODUCT)1436) -#define FIT_GARMIN_PRODUCT_FR310XT_4T ((FIT_GARMIN_PRODUCT)1446) -#define FIT_GARMIN_PRODUCT_AMX ((FIT_GARMIN_PRODUCT)1461) -#define FIT_GARMIN_PRODUCT_FR10 ((FIT_GARMIN_PRODUCT)1482) -#define FIT_GARMIN_PRODUCT_EDGE800_KOREA ((FIT_GARMIN_PRODUCT)1497) -#define FIT_GARMIN_PRODUCT_SWIM ((FIT_GARMIN_PRODUCT)1499) -#define FIT_GARMIN_PRODUCT_FR910XT_CHINA ((FIT_GARMIN_PRODUCT)1537) -#define FIT_GARMIN_PRODUCT_FENIX ((FIT_GARMIN_PRODUCT)1551) -#define FIT_GARMIN_PRODUCT_EDGE200_TAIWAN ((FIT_GARMIN_PRODUCT)1555) -#define FIT_GARMIN_PRODUCT_EDGE510 ((FIT_GARMIN_PRODUCT)1561) -#define FIT_GARMIN_PRODUCT_EDGE810 ((FIT_GARMIN_PRODUCT)1567) -#define FIT_GARMIN_PRODUCT_TEMPE ((FIT_GARMIN_PRODUCT)1570) -#define FIT_GARMIN_PRODUCT_FR910XT_JAPAN ((FIT_GARMIN_PRODUCT)1600) -#define FIT_GARMIN_PRODUCT_FR620 ((FIT_GARMIN_PRODUCT)1623) -#define FIT_GARMIN_PRODUCT_FR220 ((FIT_GARMIN_PRODUCT)1632) -#define FIT_GARMIN_PRODUCT_FR910XT_KOREA ((FIT_GARMIN_PRODUCT)1664) -#define FIT_GARMIN_PRODUCT_FR10_JAPAN ((FIT_GARMIN_PRODUCT)1688) -#define FIT_GARMIN_PRODUCT_EDGE810_JAPAN ((FIT_GARMIN_PRODUCT)1721) -#define FIT_GARMIN_PRODUCT_VIRB_ELITE ((FIT_GARMIN_PRODUCT)1735) -#define FIT_GARMIN_PRODUCT_EDGE_TOURING ((FIT_GARMIN_PRODUCT)1736) // Also Edge Touring Plus -#define FIT_GARMIN_PRODUCT_EDGE510_JAPAN ((FIT_GARMIN_PRODUCT)1742) -#define FIT_GARMIN_PRODUCT_HRM_TRI ((FIT_GARMIN_PRODUCT)1743) -#define FIT_GARMIN_PRODUCT_HRM_RUN ((FIT_GARMIN_PRODUCT)1752) -#define FIT_GARMIN_PRODUCT_FR920XT ((FIT_GARMIN_PRODUCT)1765) -#define FIT_GARMIN_PRODUCT_EDGE510_ASIA ((FIT_GARMIN_PRODUCT)1821) -#define FIT_GARMIN_PRODUCT_EDGE810_CHINA ((FIT_GARMIN_PRODUCT)1822) -#define FIT_GARMIN_PRODUCT_EDGE810_TAIWAN ((FIT_GARMIN_PRODUCT)1823) -#define FIT_GARMIN_PRODUCT_EDGE1000 ((FIT_GARMIN_PRODUCT)1836) -#define FIT_GARMIN_PRODUCT_VIVO_FIT ((FIT_GARMIN_PRODUCT)1837) -#define FIT_GARMIN_PRODUCT_VIRB_REMOTE ((FIT_GARMIN_PRODUCT)1853) -#define FIT_GARMIN_PRODUCT_VIVO_KI ((FIT_GARMIN_PRODUCT)1885) -#define FIT_GARMIN_PRODUCT_FR15 ((FIT_GARMIN_PRODUCT)1903) -#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE ((FIT_GARMIN_PRODUCT)1907) -#define FIT_GARMIN_PRODUCT_EDGE510_KOREA ((FIT_GARMIN_PRODUCT)1918) -#define FIT_GARMIN_PRODUCT_FR620_JAPAN ((FIT_GARMIN_PRODUCT)1928) -#define FIT_GARMIN_PRODUCT_FR620_CHINA ((FIT_GARMIN_PRODUCT)1929) -#define FIT_GARMIN_PRODUCT_FR220_JAPAN ((FIT_GARMIN_PRODUCT)1930) -#define FIT_GARMIN_PRODUCT_FR220_CHINA ((FIT_GARMIN_PRODUCT)1931) -#define FIT_GARMIN_PRODUCT_APPROACH_S6 ((FIT_GARMIN_PRODUCT)1936) -#define FIT_GARMIN_PRODUCT_VIVO_SMART ((FIT_GARMIN_PRODUCT)1956) -#define FIT_GARMIN_PRODUCT_FENIX2 ((FIT_GARMIN_PRODUCT)1967) -#define FIT_GARMIN_PRODUCT_EPIX ((FIT_GARMIN_PRODUCT)1988) -#define FIT_GARMIN_PRODUCT_FENIX3 ((FIT_GARMIN_PRODUCT)2050) -#define FIT_GARMIN_PRODUCT_EDGE1000_TAIWAN ((FIT_GARMIN_PRODUCT)2052) -#define FIT_GARMIN_PRODUCT_EDGE1000_JAPAN ((FIT_GARMIN_PRODUCT)2053) -#define FIT_GARMIN_PRODUCT_FR15_JAPAN ((FIT_GARMIN_PRODUCT)2061) -#define FIT_GARMIN_PRODUCT_EDGE520 ((FIT_GARMIN_PRODUCT)2067) -#define FIT_GARMIN_PRODUCT_EDGE1000_CHINA ((FIT_GARMIN_PRODUCT)2070) -#define FIT_GARMIN_PRODUCT_FR620_RUSSIA ((FIT_GARMIN_PRODUCT)2072) -#define FIT_GARMIN_PRODUCT_FR220_RUSSIA ((FIT_GARMIN_PRODUCT)2073) -#define FIT_GARMIN_PRODUCT_VECTOR_S ((FIT_GARMIN_PRODUCT)2079) -#define FIT_GARMIN_PRODUCT_EDGE1000_KOREA ((FIT_GARMIN_PRODUCT)2100) -#define FIT_GARMIN_PRODUCT_FR920XT_TAIWAN ((FIT_GARMIN_PRODUCT)2130) -#define FIT_GARMIN_PRODUCT_FR920XT_CHINA ((FIT_GARMIN_PRODUCT)2131) -#define FIT_GARMIN_PRODUCT_FR920XT_JAPAN ((FIT_GARMIN_PRODUCT)2132) -#define FIT_GARMIN_PRODUCT_VIRBX ((FIT_GARMIN_PRODUCT)2134) -#define FIT_GARMIN_PRODUCT_VIVO_SMART_APAC ((FIT_GARMIN_PRODUCT)2135) -#define FIT_GARMIN_PRODUCT_ETREX_TOUCH ((FIT_GARMIN_PRODUCT)2140) -#define FIT_GARMIN_PRODUCT_EDGE25 ((FIT_GARMIN_PRODUCT)2147) -#define FIT_GARMIN_PRODUCT_FR25 ((FIT_GARMIN_PRODUCT)2148) -#define FIT_GARMIN_PRODUCT_VIVO_FIT2 ((FIT_GARMIN_PRODUCT)2150) -#define FIT_GARMIN_PRODUCT_FR225 ((FIT_GARMIN_PRODUCT)2153) -#define FIT_GARMIN_PRODUCT_FR630 ((FIT_GARMIN_PRODUCT)2156) -#define FIT_GARMIN_PRODUCT_FR230 ((FIT_GARMIN_PRODUCT)2157) -#define FIT_GARMIN_PRODUCT_FR735XT ((FIT_GARMIN_PRODUCT)2158) -#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_APAC ((FIT_GARMIN_PRODUCT)2160) -#define FIT_GARMIN_PRODUCT_VECTOR_2 ((FIT_GARMIN_PRODUCT)2161) -#define FIT_GARMIN_PRODUCT_VECTOR_2S ((FIT_GARMIN_PRODUCT)2162) -#define FIT_GARMIN_PRODUCT_VIRBXE ((FIT_GARMIN_PRODUCT)2172) -#define FIT_GARMIN_PRODUCT_FR620_TAIWAN ((FIT_GARMIN_PRODUCT)2173) -#define FIT_GARMIN_PRODUCT_FR220_TAIWAN ((FIT_GARMIN_PRODUCT)2174) -#define FIT_GARMIN_PRODUCT_TRUSWING ((FIT_GARMIN_PRODUCT)2175) +#define FIT_GARMIN_PRODUCT_FR610_JAPAN ((FIT_GARMIN_PRODUCT)1410) +#define FIT_GARMIN_PRODUCT_EDGE500_KOREA ((FIT_GARMIN_PRODUCT)1422) +#define FIT_GARMIN_PRODUCT_FR70 ((FIT_GARMIN_PRODUCT)1436) +#define FIT_GARMIN_PRODUCT_FR310XT_4T ((FIT_GARMIN_PRODUCT)1446) +#define FIT_GARMIN_PRODUCT_AMX ((FIT_GARMIN_PRODUCT)1461) +#define FIT_GARMIN_PRODUCT_FR10 ((FIT_GARMIN_PRODUCT)1482) +#define FIT_GARMIN_PRODUCT_EDGE800_KOREA ((FIT_GARMIN_PRODUCT)1497) +#define FIT_GARMIN_PRODUCT_SWIM ((FIT_GARMIN_PRODUCT)1499) +#define FIT_GARMIN_PRODUCT_FR910XT_CHINA ((FIT_GARMIN_PRODUCT)1537) +#define FIT_GARMIN_PRODUCT_FENIX ((FIT_GARMIN_PRODUCT)1551) +#define FIT_GARMIN_PRODUCT_EDGE200_TAIWAN ((FIT_GARMIN_PRODUCT)1555) +#define FIT_GARMIN_PRODUCT_EDGE510 ((FIT_GARMIN_PRODUCT)1561) +#define FIT_GARMIN_PRODUCT_EDGE810 ((FIT_GARMIN_PRODUCT)1567) +#define FIT_GARMIN_PRODUCT_TEMPE ((FIT_GARMIN_PRODUCT)1570) +#define FIT_GARMIN_PRODUCT_FR910XT_JAPAN ((FIT_GARMIN_PRODUCT)1600) +#define FIT_GARMIN_PRODUCT_FR620 ((FIT_GARMIN_PRODUCT)1623) +#define FIT_GARMIN_PRODUCT_FR220 ((FIT_GARMIN_PRODUCT)1632) +#define FIT_GARMIN_PRODUCT_FR910XT_KOREA ((FIT_GARMIN_PRODUCT)1664) +#define FIT_GARMIN_PRODUCT_FR10_JAPAN ((FIT_GARMIN_PRODUCT)1688) +#define FIT_GARMIN_PRODUCT_EDGE810_JAPAN ((FIT_GARMIN_PRODUCT)1721) +#define FIT_GARMIN_PRODUCT_VIRB_ELITE ((FIT_GARMIN_PRODUCT)1735) +#define FIT_GARMIN_PRODUCT_EDGE_TOURING ((FIT_GARMIN_PRODUCT)1736) // Also Edge Touring Plus +#define FIT_GARMIN_PRODUCT_EDGE510_JAPAN ((FIT_GARMIN_PRODUCT)1742) +#define FIT_GARMIN_PRODUCT_HRM_TRI ((FIT_GARMIN_PRODUCT)1743) +#define FIT_GARMIN_PRODUCT_HRM_RUN ((FIT_GARMIN_PRODUCT)1752) +#define FIT_GARMIN_PRODUCT_FR920XT ((FIT_GARMIN_PRODUCT)1765) +#define FIT_GARMIN_PRODUCT_EDGE510_ASIA ((FIT_GARMIN_PRODUCT)1821) +#define FIT_GARMIN_PRODUCT_EDGE810_CHINA ((FIT_GARMIN_PRODUCT)1822) +#define FIT_GARMIN_PRODUCT_EDGE810_TAIWAN ((FIT_GARMIN_PRODUCT)1823) +#define FIT_GARMIN_PRODUCT_EDGE1000 ((FIT_GARMIN_PRODUCT)1836) +#define FIT_GARMIN_PRODUCT_VIVO_FIT ((FIT_GARMIN_PRODUCT)1837) +#define FIT_GARMIN_PRODUCT_VIRB_REMOTE ((FIT_GARMIN_PRODUCT)1853) +#define FIT_GARMIN_PRODUCT_VIVO_KI ((FIT_GARMIN_PRODUCT)1885) +#define FIT_GARMIN_PRODUCT_FR15 ((FIT_GARMIN_PRODUCT)1903) +#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE ((FIT_GARMIN_PRODUCT)1907) +#define FIT_GARMIN_PRODUCT_EDGE510_KOREA ((FIT_GARMIN_PRODUCT)1918) +#define FIT_GARMIN_PRODUCT_FR620_JAPAN ((FIT_GARMIN_PRODUCT)1928) +#define FIT_GARMIN_PRODUCT_FR620_CHINA ((FIT_GARMIN_PRODUCT)1929) +#define FIT_GARMIN_PRODUCT_FR220_JAPAN ((FIT_GARMIN_PRODUCT)1930) +#define FIT_GARMIN_PRODUCT_FR220_CHINA ((FIT_GARMIN_PRODUCT)1931) +#define FIT_GARMIN_PRODUCT_APPROACH_S6 ((FIT_GARMIN_PRODUCT)1936) +#define FIT_GARMIN_PRODUCT_VIVO_SMART ((FIT_GARMIN_PRODUCT)1956) +#define FIT_GARMIN_PRODUCT_FENIX2 ((FIT_GARMIN_PRODUCT)1967) +#define FIT_GARMIN_PRODUCT_EPIX ((FIT_GARMIN_PRODUCT)1988) +#define FIT_GARMIN_PRODUCT_FENIX3 ((FIT_GARMIN_PRODUCT)2050) +#define FIT_GARMIN_PRODUCT_EDGE1000_TAIWAN ((FIT_GARMIN_PRODUCT)2052) +#define FIT_GARMIN_PRODUCT_EDGE1000_JAPAN ((FIT_GARMIN_PRODUCT)2053) +#define FIT_GARMIN_PRODUCT_FR15_JAPAN ((FIT_GARMIN_PRODUCT)2061) +#define FIT_GARMIN_PRODUCT_EDGE520 ((FIT_GARMIN_PRODUCT)2067) +#define FIT_GARMIN_PRODUCT_EDGE1000_CHINA ((FIT_GARMIN_PRODUCT)2070) +#define FIT_GARMIN_PRODUCT_FR620_RUSSIA ((FIT_GARMIN_PRODUCT)2072) +#define FIT_GARMIN_PRODUCT_FR220_RUSSIA ((FIT_GARMIN_PRODUCT)2073) +#define FIT_GARMIN_PRODUCT_VECTOR_S ((FIT_GARMIN_PRODUCT)2079) +#define FIT_GARMIN_PRODUCT_EDGE1000_KOREA ((FIT_GARMIN_PRODUCT)2100) +#define FIT_GARMIN_PRODUCT_FR920XT_TAIWAN ((FIT_GARMIN_PRODUCT)2130) +#define FIT_GARMIN_PRODUCT_FR920XT_CHINA ((FIT_GARMIN_PRODUCT)2131) +#define FIT_GARMIN_PRODUCT_FR920XT_JAPAN ((FIT_GARMIN_PRODUCT)2132) +#define FIT_GARMIN_PRODUCT_VIRBX ((FIT_GARMIN_PRODUCT)2134) +#define FIT_GARMIN_PRODUCT_VIVO_SMART_APAC ((FIT_GARMIN_PRODUCT)2135) +#define FIT_GARMIN_PRODUCT_ETREX_TOUCH ((FIT_GARMIN_PRODUCT)2140) +#define FIT_GARMIN_PRODUCT_EDGE25 ((FIT_GARMIN_PRODUCT)2147) +#define FIT_GARMIN_PRODUCT_FR25 ((FIT_GARMIN_PRODUCT)2148) +#define FIT_GARMIN_PRODUCT_VIVO_FIT2 ((FIT_GARMIN_PRODUCT)2150) +#define FIT_GARMIN_PRODUCT_FR225 ((FIT_GARMIN_PRODUCT)2153) +#define FIT_GARMIN_PRODUCT_FR630 ((FIT_GARMIN_PRODUCT)2156) +#define FIT_GARMIN_PRODUCT_FR230 ((FIT_GARMIN_PRODUCT)2157) +#define FIT_GARMIN_PRODUCT_FR735XT ((FIT_GARMIN_PRODUCT)2158) +#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_APAC ((FIT_GARMIN_PRODUCT)2160) +#define FIT_GARMIN_PRODUCT_VECTOR_2 ((FIT_GARMIN_PRODUCT)2161) +#define FIT_GARMIN_PRODUCT_VECTOR_2S ((FIT_GARMIN_PRODUCT)2162) +#define FIT_GARMIN_PRODUCT_VIRBXE ((FIT_GARMIN_PRODUCT)2172) +#define FIT_GARMIN_PRODUCT_FR620_TAIWAN ((FIT_GARMIN_PRODUCT)2173) +#define FIT_GARMIN_PRODUCT_FR220_TAIWAN ((FIT_GARMIN_PRODUCT)2174) +#define FIT_GARMIN_PRODUCT_TRUSWING ((FIT_GARMIN_PRODUCT)2175) #define FIT_GARMIN_PRODUCT_D2AIRVENU ((FIT_GARMIN_PRODUCT)2187) -#define FIT_GARMIN_PRODUCT_FENIX3_CHINA ((FIT_GARMIN_PRODUCT)2188) -#define FIT_GARMIN_PRODUCT_FENIX3_TWN ((FIT_GARMIN_PRODUCT)2189) -#define FIT_GARMIN_PRODUCT_VARIA_HEADLIGHT ((FIT_GARMIN_PRODUCT)2192) -#define FIT_GARMIN_PRODUCT_VARIA_TAILLIGHT_OLD ((FIT_GARMIN_PRODUCT)2193) -#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE_1000 ((FIT_GARMIN_PRODUCT)2204) -#define FIT_GARMIN_PRODUCT_FR225_ASIA ((FIT_GARMIN_PRODUCT)2219) -#define FIT_GARMIN_PRODUCT_VARIA_RADAR_TAILLIGHT ((FIT_GARMIN_PRODUCT)2225) -#define FIT_GARMIN_PRODUCT_VARIA_RADAR_DISPLAY ((FIT_GARMIN_PRODUCT)2226) -#define FIT_GARMIN_PRODUCT_EDGE20 ((FIT_GARMIN_PRODUCT)2238) +#define FIT_GARMIN_PRODUCT_FENIX3_CHINA ((FIT_GARMIN_PRODUCT)2188) +#define FIT_GARMIN_PRODUCT_FENIX3_TWN ((FIT_GARMIN_PRODUCT)2189) +#define FIT_GARMIN_PRODUCT_VARIA_HEADLIGHT ((FIT_GARMIN_PRODUCT)2192) +#define FIT_GARMIN_PRODUCT_VARIA_TAILLIGHT_OLD ((FIT_GARMIN_PRODUCT)2193) +#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE_1000 ((FIT_GARMIN_PRODUCT)2204) +#define FIT_GARMIN_PRODUCT_FR225_ASIA ((FIT_GARMIN_PRODUCT)2219) +#define FIT_GARMIN_PRODUCT_VARIA_RADAR_TAILLIGHT ((FIT_GARMIN_PRODUCT)2225) +#define FIT_GARMIN_PRODUCT_VARIA_RADAR_DISPLAY ((FIT_GARMIN_PRODUCT)2226) +#define FIT_GARMIN_PRODUCT_EDGE20 ((FIT_GARMIN_PRODUCT)2238) #define FIT_GARMIN_PRODUCT_EDGE520_ASIA ((FIT_GARMIN_PRODUCT)2260) #define FIT_GARMIN_PRODUCT_EDGE520_JAPAN ((FIT_GARMIN_PRODUCT)2261) -#define FIT_GARMIN_PRODUCT_D2_BRAVO ((FIT_GARMIN_PRODUCT)2262) -#define FIT_GARMIN_PRODUCT_APPROACH_S20 ((FIT_GARMIN_PRODUCT)2266) +#define FIT_GARMIN_PRODUCT_D2_BRAVO ((FIT_GARMIN_PRODUCT)2262) +#define FIT_GARMIN_PRODUCT_APPROACH_S20 ((FIT_GARMIN_PRODUCT)2266) #define FIT_GARMIN_PRODUCT_VIVO_SMART2 ((FIT_GARMIN_PRODUCT)2271) #define FIT_GARMIN_PRODUCT_EDGE1000_THAI ((FIT_GARMIN_PRODUCT)2274) -#define FIT_GARMIN_PRODUCT_VARIA_REMOTE ((FIT_GARMIN_PRODUCT)2276) +#define FIT_GARMIN_PRODUCT_VARIA_REMOTE ((FIT_GARMIN_PRODUCT)2276) #define FIT_GARMIN_PRODUCT_EDGE25_ASIA ((FIT_GARMIN_PRODUCT)2288) #define FIT_GARMIN_PRODUCT_EDGE25_JPN ((FIT_GARMIN_PRODUCT)2289) #define FIT_GARMIN_PRODUCT_EDGE20_ASIA ((FIT_GARMIN_PRODUCT)2290) -#define FIT_GARMIN_PRODUCT_APPROACH_X40 ((FIT_GARMIN_PRODUCT)2292) +#define FIT_GARMIN_PRODUCT_APPROACH_X40 ((FIT_GARMIN_PRODUCT)2292) #define FIT_GARMIN_PRODUCT_FENIX3_JAPAN ((FIT_GARMIN_PRODUCT)2293) #define FIT_GARMIN_PRODUCT_VIVO_SMART_EMEA ((FIT_GARMIN_PRODUCT)2294) #define FIT_GARMIN_PRODUCT_FR630_ASIA ((FIT_GARMIN_PRODUCT)2310) #define FIT_GARMIN_PRODUCT_FR630_JPN ((FIT_GARMIN_PRODUCT)2311) #define FIT_GARMIN_PRODUCT_FR230_JPN ((FIT_GARMIN_PRODUCT)2313) -#define FIT_GARMIN_PRODUCT_HRM4_RUN ((FIT_GARMIN_PRODUCT)2327) +#define FIT_GARMIN_PRODUCT_HRM4_RUN ((FIT_GARMIN_PRODUCT)2327) #define FIT_GARMIN_PRODUCT_EPIX_JAPAN ((FIT_GARMIN_PRODUCT)2332) -#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_HR ((FIT_GARMIN_PRODUCT)2337) -#define FIT_GARMIN_PRODUCT_VIVO_SMART_GPS_HR ((FIT_GARMIN_PRODUCT)2347) -#define FIT_GARMIN_PRODUCT_VIVO_SMART_HR ((FIT_GARMIN_PRODUCT)2348) +#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_HR ((FIT_GARMIN_PRODUCT)2337) +#define FIT_GARMIN_PRODUCT_VIVO_SMART_GPS_HR ((FIT_GARMIN_PRODUCT)2347) +#define FIT_GARMIN_PRODUCT_VIVO_SMART_HR ((FIT_GARMIN_PRODUCT)2348) #define FIT_GARMIN_PRODUCT_VIVO_SMART_HR_ASIA ((FIT_GARMIN_PRODUCT)2361) #define FIT_GARMIN_PRODUCT_VIVO_SMART_GPS_HR_ASIA ((FIT_GARMIN_PRODUCT)2362) -#define FIT_GARMIN_PRODUCT_VIVO_MOVE ((FIT_GARMIN_PRODUCT)2368) +#define FIT_GARMIN_PRODUCT_VIVO_MOVE ((FIT_GARMIN_PRODUCT)2368) #define FIT_GARMIN_PRODUCT_VARIA_TAILLIGHT ((FIT_GARMIN_PRODUCT)2379) #define FIT_GARMIN_PRODUCT_FR235_JAPAN ((FIT_GARMIN_PRODUCT)2397) -#define FIT_GARMIN_PRODUCT_VARIA_VISION ((FIT_GARMIN_PRODUCT)2398) -#define FIT_GARMIN_PRODUCT_VIVO_FIT3 ((FIT_GARMIN_PRODUCT)2406) +#define FIT_GARMIN_PRODUCT_VARIA_VISION ((FIT_GARMIN_PRODUCT)2398) +#define FIT_GARMIN_PRODUCT_VIVO_FIT3 ((FIT_GARMIN_PRODUCT)2406) #define FIT_GARMIN_PRODUCT_FENIX3_KOREA ((FIT_GARMIN_PRODUCT)2407) #define FIT_GARMIN_PRODUCT_FENIX3_SEA ((FIT_GARMIN_PRODUCT)2408) -#define FIT_GARMIN_PRODUCT_FENIX3_HR ((FIT_GARMIN_PRODUCT)2413) -#define FIT_GARMIN_PRODUCT_VIRB_ULTRA_30 ((FIT_GARMIN_PRODUCT)2417) -#define FIT_GARMIN_PRODUCT_INDEX_SMART_SCALE ((FIT_GARMIN_PRODUCT)2429) -#define FIT_GARMIN_PRODUCT_FR235 ((FIT_GARMIN_PRODUCT)2431) -#define FIT_GARMIN_PRODUCT_FENIX3_CHRONOS ((FIT_GARMIN_PRODUCT)2432) -#define FIT_GARMIN_PRODUCT_OREGON7XX ((FIT_GARMIN_PRODUCT)2441) -#define FIT_GARMIN_PRODUCT_RINO7XX ((FIT_GARMIN_PRODUCT)2444) +#define FIT_GARMIN_PRODUCT_FENIX3_HR ((FIT_GARMIN_PRODUCT)2413) +#define FIT_GARMIN_PRODUCT_VIRB_ULTRA_30 ((FIT_GARMIN_PRODUCT)2417) +#define FIT_GARMIN_PRODUCT_INDEX_SMART_SCALE ((FIT_GARMIN_PRODUCT)2429) +#define FIT_GARMIN_PRODUCT_FR235 ((FIT_GARMIN_PRODUCT)2431) +#define FIT_GARMIN_PRODUCT_FENIX3_CHRONOS ((FIT_GARMIN_PRODUCT)2432) +#define FIT_GARMIN_PRODUCT_OREGON7XX ((FIT_GARMIN_PRODUCT)2441) +#define FIT_GARMIN_PRODUCT_RINO7XX ((FIT_GARMIN_PRODUCT)2444) #define FIT_GARMIN_PRODUCT_EPIX_KOREA ((FIT_GARMIN_PRODUCT)2457) #define FIT_GARMIN_PRODUCT_FENIX3_HR_CHN ((FIT_GARMIN_PRODUCT)2473) #define FIT_GARMIN_PRODUCT_FENIX3_HR_TWN ((FIT_GARMIN_PRODUCT)2474) #define FIT_GARMIN_PRODUCT_FENIX3_HR_JPN ((FIT_GARMIN_PRODUCT)2475) #define FIT_GARMIN_PRODUCT_FENIX3_HR_SEA ((FIT_GARMIN_PRODUCT)2476) #define FIT_GARMIN_PRODUCT_FENIX3_HR_KOR ((FIT_GARMIN_PRODUCT)2477) -#define FIT_GARMIN_PRODUCT_NAUTIX ((FIT_GARMIN_PRODUCT)2496) -#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_HR_APAC ((FIT_GARMIN_PRODUCT)2497) -#define FIT_GARMIN_PRODUCT_OREGON7XX_WW ((FIT_GARMIN_PRODUCT)2512) -#define FIT_GARMIN_PRODUCT_EDGE_820 ((FIT_GARMIN_PRODUCT)2530) -#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE_820 ((FIT_GARMIN_PRODUCT)2531) -#define FIT_GARMIN_PRODUCT_FR735XT_APAC ((FIT_GARMIN_PRODUCT)2533) -#define FIT_GARMIN_PRODUCT_FR735XT_JAPAN ((FIT_GARMIN_PRODUCT)2534) -#define FIT_GARMIN_PRODUCT_FENIX5S ((FIT_GARMIN_PRODUCT)2544) -#define FIT_GARMIN_PRODUCT_D2_BRAVO_TITANIUM ((FIT_GARMIN_PRODUCT)2547) -#define FIT_GARMIN_PRODUCT_VARIA_UT800 ((FIT_GARMIN_PRODUCT)2567) // Varia UT 800 SW -#define FIT_GARMIN_PRODUCT_RUNNING_DYNAMICS_POD ((FIT_GARMIN_PRODUCT)2593) +#define FIT_GARMIN_PRODUCT_NAUTIX ((FIT_GARMIN_PRODUCT)2496) +#define FIT_GARMIN_PRODUCT_VIVO_ACTIVE_HR_APAC ((FIT_GARMIN_PRODUCT)2497) +#define FIT_GARMIN_PRODUCT_OREGON7XX_WW ((FIT_GARMIN_PRODUCT)2512) +#define FIT_GARMIN_PRODUCT_EDGE_820 ((FIT_GARMIN_PRODUCT)2530) +#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE_820 ((FIT_GARMIN_PRODUCT)2531) +#define FIT_GARMIN_PRODUCT_FR735XT_APAC ((FIT_GARMIN_PRODUCT)2533) +#define FIT_GARMIN_PRODUCT_FR735XT_JAPAN ((FIT_GARMIN_PRODUCT)2534) +#define FIT_GARMIN_PRODUCT_FENIX5S ((FIT_GARMIN_PRODUCT)2544) +#define FIT_GARMIN_PRODUCT_D2_BRAVO_TITANIUM ((FIT_GARMIN_PRODUCT)2547) +#define FIT_GARMIN_PRODUCT_VARIA_UT800 ((FIT_GARMIN_PRODUCT)2567) // Varia UT 800 SW +#define FIT_GARMIN_PRODUCT_RUNNING_DYNAMICS_POD ((FIT_GARMIN_PRODUCT)2593) #define FIT_GARMIN_PRODUCT_EDGE_820_CHINA ((FIT_GARMIN_PRODUCT)2599) #define FIT_GARMIN_PRODUCT_EDGE_820_JAPAN ((FIT_GARMIN_PRODUCT)2600) -#define FIT_GARMIN_PRODUCT_FENIX5X ((FIT_GARMIN_PRODUCT)2604) -#define FIT_GARMIN_PRODUCT_VIVO_FIT_JR ((FIT_GARMIN_PRODUCT)2606) -#define FIT_GARMIN_PRODUCT_VIVO_SMART3 ((FIT_GARMIN_PRODUCT)2622) -#define FIT_GARMIN_PRODUCT_VIVO_SPORT ((FIT_GARMIN_PRODUCT)2623) +#define FIT_GARMIN_PRODUCT_FENIX5X ((FIT_GARMIN_PRODUCT)2604) +#define FIT_GARMIN_PRODUCT_VIVO_FIT_JR ((FIT_GARMIN_PRODUCT)2606) +#define FIT_GARMIN_PRODUCT_VIVO_SMART3 ((FIT_GARMIN_PRODUCT)2622) +#define FIT_GARMIN_PRODUCT_VIVO_SPORT ((FIT_GARMIN_PRODUCT)2623) #define FIT_GARMIN_PRODUCT_EDGE_820_TAIWAN ((FIT_GARMIN_PRODUCT)2628) #define FIT_GARMIN_PRODUCT_EDGE_820_KOREA ((FIT_GARMIN_PRODUCT)2629) #define FIT_GARMIN_PRODUCT_EDGE_820_SEA ((FIT_GARMIN_PRODUCT)2630) #define FIT_GARMIN_PRODUCT_FR35_HEBREW ((FIT_GARMIN_PRODUCT)2650) -#define FIT_GARMIN_PRODUCT_APPROACH_S60 ((FIT_GARMIN_PRODUCT)2656) +#define FIT_GARMIN_PRODUCT_APPROACH_S60 ((FIT_GARMIN_PRODUCT)2656) #define FIT_GARMIN_PRODUCT_FR35_APAC ((FIT_GARMIN_PRODUCT)2667) #define FIT_GARMIN_PRODUCT_FR35_JAPAN ((FIT_GARMIN_PRODUCT)2668) #define FIT_GARMIN_PRODUCT_FENIX3_CHRONOS_ASIA ((FIT_GARMIN_PRODUCT)2675) -#define FIT_GARMIN_PRODUCT_VIRB_360 ((FIT_GARMIN_PRODUCT)2687) -#define FIT_GARMIN_PRODUCT_FR935 ((FIT_GARMIN_PRODUCT)2691) -#define FIT_GARMIN_PRODUCT_FENIX5 ((FIT_GARMIN_PRODUCT)2697) -#define FIT_GARMIN_PRODUCT_VIVOACTIVE3 ((FIT_GARMIN_PRODUCT)2700) -#define FIT_GARMIN_PRODUCT_FR235_CHINA_NFC ((FIT_GARMIN_PRODUCT)2733) -#define FIT_GARMIN_PRODUCT_FORETREX_601_701 ((FIT_GARMIN_PRODUCT)2769) -#define FIT_GARMIN_PRODUCT_VIVO_MOVE_HR ((FIT_GARMIN_PRODUCT)2772) -#define FIT_GARMIN_PRODUCT_EDGE_1030 ((FIT_GARMIN_PRODUCT)2713) +#define FIT_GARMIN_PRODUCT_VIRB_360 ((FIT_GARMIN_PRODUCT)2687) +#define FIT_GARMIN_PRODUCT_FR935 ((FIT_GARMIN_PRODUCT)2691) +#define FIT_GARMIN_PRODUCT_FENIX5 ((FIT_GARMIN_PRODUCT)2697) +#define FIT_GARMIN_PRODUCT_VIVOACTIVE3 ((FIT_GARMIN_PRODUCT)2700) +#define FIT_GARMIN_PRODUCT_FR235_CHINA_NFC ((FIT_GARMIN_PRODUCT)2733) +#define FIT_GARMIN_PRODUCT_FORETREX_601_701 ((FIT_GARMIN_PRODUCT)2769) +#define FIT_GARMIN_PRODUCT_VIVO_MOVE_HR ((FIT_GARMIN_PRODUCT)2772) +#define FIT_GARMIN_PRODUCT_EDGE_1030 ((FIT_GARMIN_PRODUCT)2713) #define FIT_GARMIN_PRODUCT_FENIX5_ASIA ((FIT_GARMIN_PRODUCT)2796) #define FIT_GARMIN_PRODUCT_FENIX5S_ASIA ((FIT_GARMIN_PRODUCT)2797) #define FIT_GARMIN_PRODUCT_FENIX5X_ASIA ((FIT_GARMIN_PRODUCT)2798) -#define FIT_GARMIN_PRODUCT_APPROACH_Z80 ((FIT_GARMIN_PRODUCT)2806) -#define FIT_GARMIN_PRODUCT_FR35_KOREA ((FIT_GARMIN_PRODUCT)2814) -#define FIT_GARMIN_PRODUCT_D2CHARLIE ((FIT_GARMIN_PRODUCT)2819) -#define FIT_GARMIN_PRODUCT_VIVO_SMART3_APAC ((FIT_GARMIN_PRODUCT)2831) -#define FIT_GARMIN_PRODUCT_VIVO_SPORT_APAC ((FIT_GARMIN_PRODUCT)2832) +#define FIT_GARMIN_PRODUCT_APPROACH_Z80 ((FIT_GARMIN_PRODUCT)2806) +#define FIT_GARMIN_PRODUCT_FR35_KOREA ((FIT_GARMIN_PRODUCT)2814) +#define FIT_GARMIN_PRODUCT_D2CHARLIE ((FIT_GARMIN_PRODUCT)2819) +#define FIT_GARMIN_PRODUCT_VIVO_SMART3_APAC ((FIT_GARMIN_PRODUCT)2831) +#define FIT_GARMIN_PRODUCT_VIVO_SPORT_APAC ((FIT_GARMIN_PRODUCT)2832) #define FIT_GARMIN_PRODUCT_FR935_ASIA ((FIT_GARMIN_PRODUCT)2833) -#define FIT_GARMIN_PRODUCT_DESCENT ((FIT_GARMIN_PRODUCT)2859) -#define FIT_GARMIN_PRODUCT_FR645 ((FIT_GARMIN_PRODUCT)2886) -#define FIT_GARMIN_PRODUCT_FR645M ((FIT_GARMIN_PRODUCT)2888) +#define FIT_GARMIN_PRODUCT_DESCENT ((FIT_GARMIN_PRODUCT)2859) +#define FIT_GARMIN_PRODUCT_FR645 ((FIT_GARMIN_PRODUCT)2886) +#define FIT_GARMIN_PRODUCT_FR645M ((FIT_GARMIN_PRODUCT)2888) #define FIT_GARMIN_PRODUCT_FR30 ((FIT_GARMIN_PRODUCT)2891) -#define FIT_GARMIN_PRODUCT_FENIX5S_PLUS ((FIT_GARMIN_PRODUCT)2900) -#define FIT_GARMIN_PRODUCT_EDGE_130 ((FIT_GARMIN_PRODUCT)2909) +#define FIT_GARMIN_PRODUCT_FENIX5S_PLUS ((FIT_GARMIN_PRODUCT)2900) +#define FIT_GARMIN_PRODUCT_EDGE_130 ((FIT_GARMIN_PRODUCT)2909) #define FIT_GARMIN_PRODUCT_EDGE_1030_ASIA ((FIT_GARMIN_PRODUCT)2924) -#define FIT_GARMIN_PRODUCT_VIVOSMART_4 ((FIT_GARMIN_PRODUCT)2927) +#define FIT_GARMIN_PRODUCT_VIVOSMART_4 ((FIT_GARMIN_PRODUCT)2927) #define FIT_GARMIN_PRODUCT_VIVO_MOVE_HR_ASIA ((FIT_GARMIN_PRODUCT)2945) -#define FIT_GARMIN_PRODUCT_APPROACH_X10 ((FIT_GARMIN_PRODUCT)2962) +#define FIT_GARMIN_PRODUCT_APPROACH_X10 ((FIT_GARMIN_PRODUCT)2962) #define FIT_GARMIN_PRODUCT_FR30_ASIA ((FIT_GARMIN_PRODUCT)2977) -#define FIT_GARMIN_PRODUCT_VIVOACTIVE3M_W ((FIT_GARMIN_PRODUCT)2988) +#define FIT_GARMIN_PRODUCT_VIVOACTIVE3M_W ((FIT_GARMIN_PRODUCT)2988) #define FIT_GARMIN_PRODUCT_FR645_ASIA ((FIT_GARMIN_PRODUCT)3003) #define FIT_GARMIN_PRODUCT_FR645M_ASIA ((FIT_GARMIN_PRODUCT)3004) -#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE ((FIT_GARMIN_PRODUCT)3011) -#define FIT_GARMIN_PRODUCT_GPSMAP66 ((FIT_GARMIN_PRODUCT)3028) -#define FIT_GARMIN_PRODUCT_APPROACH_S10 ((FIT_GARMIN_PRODUCT)3049) -#define FIT_GARMIN_PRODUCT_VIVOACTIVE3M_L ((FIT_GARMIN_PRODUCT)3066) -#define FIT_GARMIN_PRODUCT_APPROACH_G80 ((FIT_GARMIN_PRODUCT)3085) +#define FIT_GARMIN_PRODUCT_EDGE_EXPLORE ((FIT_GARMIN_PRODUCT)3011) +#define FIT_GARMIN_PRODUCT_GPSMAP66 ((FIT_GARMIN_PRODUCT)3028) +#define FIT_GARMIN_PRODUCT_APPROACH_S10 ((FIT_GARMIN_PRODUCT)3049) +#define FIT_GARMIN_PRODUCT_VIVOACTIVE3M_L ((FIT_GARMIN_PRODUCT)3066) +#define FIT_GARMIN_PRODUCT_APPROACH_G80 ((FIT_GARMIN_PRODUCT)3085) #define FIT_GARMIN_PRODUCT_EDGE_130_ASIA ((FIT_GARMIN_PRODUCT)3092) #define FIT_GARMIN_PRODUCT_EDGE_1030_BONTRAGER ((FIT_GARMIN_PRODUCT)3095) -#define FIT_GARMIN_PRODUCT_FENIX5_PLUS ((FIT_GARMIN_PRODUCT)3110) -#define FIT_GARMIN_PRODUCT_FENIX5X_PLUS ((FIT_GARMIN_PRODUCT)3111) -#define FIT_GARMIN_PRODUCT_EDGE_520_PLUS ((FIT_GARMIN_PRODUCT)3112) +#define FIT_GARMIN_PRODUCT_FENIX5_PLUS ((FIT_GARMIN_PRODUCT)3110) +#define FIT_GARMIN_PRODUCT_FENIX5X_PLUS ((FIT_GARMIN_PRODUCT)3111) +#define FIT_GARMIN_PRODUCT_EDGE_520_PLUS ((FIT_GARMIN_PRODUCT)3112) #define FIT_GARMIN_PRODUCT_FR945 ((FIT_GARMIN_PRODUCT)3113) #define FIT_GARMIN_PRODUCT_EDGE_530 ((FIT_GARMIN_PRODUCT)3121) #define FIT_GARMIN_PRODUCT_EDGE_830 ((FIT_GARMIN_PRODUCT)3122) -#define FIT_GARMIN_PRODUCT_FENIX5S_PLUS_APAC ((FIT_GARMIN_PRODUCT)3134) -#define FIT_GARMIN_PRODUCT_FENIX5X_PLUS_APAC ((FIT_GARMIN_PRODUCT)3135) -#define FIT_GARMIN_PRODUCT_EDGE_520_PLUS_APAC ((FIT_GARMIN_PRODUCT)3142) +#define FIT_GARMIN_PRODUCT_FENIX5S_PLUS_APAC ((FIT_GARMIN_PRODUCT)3134) +#define FIT_GARMIN_PRODUCT_FENIX5X_PLUS_APAC ((FIT_GARMIN_PRODUCT)3135) +#define FIT_GARMIN_PRODUCT_EDGE_520_PLUS_APAC ((FIT_GARMIN_PRODUCT)3142) #define FIT_GARMIN_PRODUCT_FR235L_ASIA ((FIT_GARMIN_PRODUCT)3144) #define FIT_GARMIN_PRODUCT_FR245_ASIA ((FIT_GARMIN_PRODUCT)3145) #define FIT_GARMIN_PRODUCT_VIVO_ACTIVE3M_APAC ((FIT_GARMIN_PRODUCT)3163) @@ -1454,20 +1454,20 @@ typedef FIT_UINT16 FIT_GARMIN_PRODUCT; #define FIT_GARMIN_PRODUCT_FENIX6_SPORT ((FIT_GARMIN_PRODUCT)3289) #define FIT_GARMIN_PRODUCT_FENIX6 ((FIT_GARMIN_PRODUCT)3290) #define FIT_GARMIN_PRODUCT_FENIX6X ((FIT_GARMIN_PRODUCT)3291) -#define FIT_GARMIN_PRODUCT_HRM_DUAL ((FIT_GARMIN_PRODUCT)3299) // HRM-Dual -#define FIT_GARMIN_PRODUCT_VIVO_MOVE3_PREMIUM ((FIT_GARMIN_PRODUCT)3308) -#define FIT_GARMIN_PRODUCT_APPROACH_S40 ((FIT_GARMIN_PRODUCT)3314) +#define FIT_GARMIN_PRODUCT_HRM_DUAL ((FIT_GARMIN_PRODUCT)3299) // HRM-Dual +#define FIT_GARMIN_PRODUCT_VIVO_MOVE3_PREMIUM ((FIT_GARMIN_PRODUCT)3308) +#define FIT_GARMIN_PRODUCT_APPROACH_S40 ((FIT_GARMIN_PRODUCT)3314) #define FIT_GARMIN_PRODUCT_FR245M_ASIA ((FIT_GARMIN_PRODUCT)3321) -#define FIT_GARMIN_PRODUCT_EDGE_530_APAC ((FIT_GARMIN_PRODUCT)3349) -#define FIT_GARMIN_PRODUCT_EDGE_830_APAC ((FIT_GARMIN_PRODUCT)3350) -#define FIT_GARMIN_PRODUCT_VIVO_MOVE3 ((FIT_GARMIN_PRODUCT)3378) +#define FIT_GARMIN_PRODUCT_EDGE_530_APAC ((FIT_GARMIN_PRODUCT)3349) +#define FIT_GARMIN_PRODUCT_EDGE_830_APAC ((FIT_GARMIN_PRODUCT)3350) +#define FIT_GARMIN_PRODUCT_VIVO_MOVE3 ((FIT_GARMIN_PRODUCT)3378) #define FIT_GARMIN_PRODUCT_VIVO_ACTIVE4_SMALL_ASIA ((FIT_GARMIN_PRODUCT)3387) #define FIT_GARMIN_PRODUCT_VIVO_ACTIVE4_LARGE_ASIA ((FIT_GARMIN_PRODUCT)3388) #define FIT_GARMIN_PRODUCT_VIVO_ACTIVE4_OLED_ASIA ((FIT_GARMIN_PRODUCT)3389) -#define FIT_GARMIN_PRODUCT_SWIM2 ((FIT_GARMIN_PRODUCT)3405) +#define FIT_GARMIN_PRODUCT_SWIM2 ((FIT_GARMIN_PRODUCT)3405) #define FIT_GARMIN_PRODUCT_MARQ_DRIVER_ASIA ((FIT_GARMIN_PRODUCT)3420) #define FIT_GARMIN_PRODUCT_MARQ_AVIATOR_ASIA ((FIT_GARMIN_PRODUCT)3421) -#define FIT_GARMIN_PRODUCT_VIVO_MOVE3_ASIA ((FIT_GARMIN_PRODUCT)3422) +#define FIT_GARMIN_PRODUCT_VIVO_MOVE3_ASIA ((FIT_GARMIN_PRODUCT)3422) #define FIT_GARMIN_PRODUCT_FR945_ASIA ((FIT_GARMIN_PRODUCT)3441) #define FIT_GARMIN_PRODUCT_VIVO_ACTIVE3T_CHN ((FIT_GARMIN_PRODUCT)3446) #define FIT_GARMIN_PRODUCT_MARQ_CAPTAIN_ASIA ((FIT_GARMIN_PRODUCT)3448) @@ -1475,7 +1475,7 @@ typedef FIT_UINT16 FIT_GARMIN_PRODUCT; #define FIT_GARMIN_PRODUCT_MARQ_EXPEDITION_ASIA ((FIT_GARMIN_PRODUCT)3450) #define FIT_GARMIN_PRODUCT_MARQ_ATHLETE_ASIA ((FIT_GARMIN_PRODUCT)3451) #define FIT_GARMIN_PRODUCT_FR45_ASIA ((FIT_GARMIN_PRODUCT)3469) -#define FIT_GARMIN_PRODUCT_VIVOACTIVE3_DAIMLER ((FIT_GARMIN_PRODUCT)3473) +#define FIT_GARMIN_PRODUCT_VIVOACTIVE3_DAIMLER ((FIT_GARMIN_PRODUCT)3473) #define FIT_GARMIN_PRODUCT_FENIX6S_SPORT_ASIA ((FIT_GARMIN_PRODUCT)3512) #define FIT_GARMIN_PRODUCT_FENIX6S_ASIA ((FIT_GARMIN_PRODUCT)3513) #define FIT_GARMIN_PRODUCT_FENIX6_SPORT_ASIA ((FIT_GARMIN_PRODUCT)3514) @@ -1487,7 +1487,7 @@ typedef FIT_UINT16 FIT_GARMIN_PRODUCT; #define FIT_GARMIN_PRODUCT_VENUSQ ((FIT_GARMIN_PRODUCT)3600) #define FIT_GARMIN_PRODUCT_MARQ_ADVENTURER ((FIT_GARMIN_PRODUCT)3624) #define FIT_GARMIN_PRODUCT_MARQ_ADVENTURER_ASIA ((FIT_GARMIN_PRODUCT)3648) -#define FIT_GARMIN_PRODUCT_SWIM2_APAC ((FIT_GARMIN_PRODUCT)3639) +#define FIT_GARMIN_PRODUCT_SWIM2_APAC ((FIT_GARMIN_PRODUCT)3639) #define FIT_GARMIN_PRODUCT_VENU_DAIMLER_ASIA ((FIT_GARMIN_PRODUCT)3737) #define FIT_GARMIN_PRODUCT_MARQ_GOLFER ((FIT_GARMIN_PRODUCT)3739) #define FIT_GARMIN_PRODUCT_VENU_DAIMLER ((FIT_GARMIN_PRODUCT)3740) @@ -1497,2442 +1497,2442 @@ typedef FIT_UINT16 FIT_GARMIN_PRODUCT; #define FIT_GARMIN_PRODUCT_VENUSQ_ASIA ((FIT_GARMIN_PRODUCT)3837) #define FIT_GARMIN_PRODUCT_MARQ_GOLFER_ASIA ((FIT_GARMIN_PRODUCT)3850) #define FIT_GARMIN_PRODUCT_VENU2PLUS ((FIT_GARMIN_PRODUCT)3851) -#define FIT_GARMIN_PRODUCT_SDM4 ((FIT_GARMIN_PRODUCT)10007) // SDM4 footpod -#define FIT_GARMIN_PRODUCT_EDGE_REMOTE ((FIT_GARMIN_PRODUCT)10014) +#define FIT_GARMIN_PRODUCT_SDM4 ((FIT_GARMIN_PRODUCT)10007) // SDM4 footpod +#define FIT_GARMIN_PRODUCT_EDGE_REMOTE ((FIT_GARMIN_PRODUCT)10014) #define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_WIN ((FIT_GARMIN_PRODUCT)20533) #define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_MAC ((FIT_GARMIN_PRODUCT)20534) -#define FIT_GARMIN_PRODUCT_TRAINING_CENTER ((FIT_GARMIN_PRODUCT)20119) +#define FIT_GARMIN_PRODUCT_TRAINING_CENTER ((FIT_GARMIN_PRODUCT)20119) #define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_ANDROID ((FIT_GARMIN_PRODUCT)30045) #define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_IOS ((FIT_GARMIN_PRODUCT)30046) #define FIT_GARMIN_PRODUCT_TACX_TRAINING_APP_LEGACY ((FIT_GARMIN_PRODUCT)30047) -#define FIT_GARMIN_PRODUCT_CONNECTIQ_SIMULATOR ((FIT_GARMIN_PRODUCT)65531) -#define FIT_GARMIN_PRODUCT_ANDROID_ANTPLUS_PLUGIN ((FIT_GARMIN_PRODUCT)65532) -#define FIT_GARMIN_PRODUCT_CONNECT ((FIT_GARMIN_PRODUCT)65534) // Garmin Connect website +#define FIT_GARMIN_PRODUCT_CONNECTIQ_SIMULATOR ((FIT_GARMIN_PRODUCT)65531) +#define FIT_GARMIN_PRODUCT_ANDROID_ANTPLUS_PLUGIN ((FIT_GARMIN_PRODUCT)65532) +#define FIT_GARMIN_PRODUCT_CONNECT ((FIT_GARMIN_PRODUCT)65534) // Garmin Connect website #define FIT_GARMIN_PRODUCT_COUNT 318 - -typedef FIT_UINT8 FIT_ANTPLUS_DEVICE_TYPE; -#define FIT_ANTPLUS_DEVICE_TYPE_INVALID FIT_UINT8_INVALID -#define FIT_ANTPLUS_DEVICE_TYPE_ANTFS ((FIT_ANTPLUS_DEVICE_TYPE)1) -#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_POWER ((FIT_ANTPLUS_DEVICE_TYPE)11) -#define FIT_ANTPLUS_DEVICE_TYPE_ENVIRONMENT_SENSOR_LEGACY ((FIT_ANTPLUS_DEVICE_TYPE)12) -#define FIT_ANTPLUS_DEVICE_TYPE_MULTI_SPORT_SPEED_DISTANCE ((FIT_ANTPLUS_DEVICE_TYPE)15) -#define FIT_ANTPLUS_DEVICE_TYPE_CONTROL ((FIT_ANTPLUS_DEVICE_TYPE)16) -#define FIT_ANTPLUS_DEVICE_TYPE_FITNESS_EQUIPMENT ((FIT_ANTPLUS_DEVICE_TYPE)17) -#define FIT_ANTPLUS_DEVICE_TYPE_BLOOD_PRESSURE ((FIT_ANTPLUS_DEVICE_TYPE)18) -#define FIT_ANTPLUS_DEVICE_TYPE_GEOCACHE_NODE ((FIT_ANTPLUS_DEVICE_TYPE)19) -#define FIT_ANTPLUS_DEVICE_TYPE_LIGHT_ELECTRIC_VEHICLE ((FIT_ANTPLUS_DEVICE_TYPE)20) -#define FIT_ANTPLUS_DEVICE_TYPE_ENV_SENSOR ((FIT_ANTPLUS_DEVICE_TYPE)25) -#define FIT_ANTPLUS_DEVICE_TYPE_RACQUET ((FIT_ANTPLUS_DEVICE_TYPE)26) -#define FIT_ANTPLUS_DEVICE_TYPE_CONTROL_HUB ((FIT_ANTPLUS_DEVICE_TYPE)27) -#define FIT_ANTPLUS_DEVICE_TYPE_MUSCLE_OXYGEN ((FIT_ANTPLUS_DEVICE_TYPE)31) -#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_LIGHT_MAIN ((FIT_ANTPLUS_DEVICE_TYPE)35) -#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_LIGHT_SHARED ((FIT_ANTPLUS_DEVICE_TYPE)36) -#define FIT_ANTPLUS_DEVICE_TYPE_EXD ((FIT_ANTPLUS_DEVICE_TYPE)38) -#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_RADAR ((FIT_ANTPLUS_DEVICE_TYPE)40) -#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_AERO ((FIT_ANTPLUS_DEVICE_TYPE)46) -#define FIT_ANTPLUS_DEVICE_TYPE_WEIGHT_SCALE ((FIT_ANTPLUS_DEVICE_TYPE)119) -#define FIT_ANTPLUS_DEVICE_TYPE_HEART_RATE ((FIT_ANTPLUS_DEVICE_TYPE)120) -#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_SPEED_CADENCE ((FIT_ANTPLUS_DEVICE_TYPE)121) -#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_CADENCE ((FIT_ANTPLUS_DEVICE_TYPE)122) -#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_SPEED ((FIT_ANTPLUS_DEVICE_TYPE)123) -#define FIT_ANTPLUS_DEVICE_TYPE_STRIDE_SPEED_DISTANCE ((FIT_ANTPLUS_DEVICE_TYPE)124) -#define FIT_ANTPLUS_DEVICE_TYPE_COUNT 24 - -typedef FIT_ENUM FIT_ANT_NETWORK; -#define FIT_ANT_NETWORK_INVALID FIT_ENUM_INVALID -#define FIT_ANT_NETWORK_PUBLIC ((FIT_ANT_NETWORK)0) -#define FIT_ANT_NETWORK_ANTPLUS ((FIT_ANT_NETWORK)1) -#define FIT_ANT_NETWORK_ANTFS ((FIT_ANT_NETWORK)2) -#define FIT_ANT_NETWORK_PRIVATE ((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_WORKOUT_CAPABILITIES)0x00000001) -#define FIT_WORKOUT_CAPABILITIES_CUSTOM ((FIT_WORKOUT_CAPABILITIES)0x00000002) -#define FIT_WORKOUT_CAPABILITIES_FITNESS_EQUIPMENT ((FIT_WORKOUT_CAPABILITIES)0x00000004) -#define FIT_WORKOUT_CAPABILITIES_FIRSTBEAT ((FIT_WORKOUT_CAPABILITIES)0x00000008) -#define FIT_WORKOUT_CAPABILITIES_NEW_LEAF ((FIT_WORKOUT_CAPABILITIES)0x00000010) -#define FIT_WORKOUT_CAPABILITIES_TCX ((FIT_WORKOUT_CAPABILITIES)0x00000020) // For backwards compatibility. Watch should add missing id fields then clear flag. -#define FIT_WORKOUT_CAPABILITIES_SPEED ((FIT_WORKOUT_CAPABILITIES)0x00000080) // Speed source required for workout step. -#define FIT_WORKOUT_CAPABILITIES_HEART_RATE ((FIT_WORKOUT_CAPABILITIES)0x00000100) // Heart rate source required for workout step. -#define FIT_WORKOUT_CAPABILITIES_DISTANCE ((FIT_WORKOUT_CAPABILITIES)0x00000200) // Distance source required for workout step. -#define FIT_WORKOUT_CAPABILITIES_CADENCE ((FIT_WORKOUT_CAPABILITIES)0x00000400) // Cadence source required for workout step. -#define FIT_WORKOUT_CAPABILITIES_POWER ((FIT_WORKOUT_CAPABILITIES)0x00000800) // Power source required for workout step. -#define FIT_WORKOUT_CAPABILITIES_GRADE ((FIT_WORKOUT_CAPABILITIES)0x00001000) // Grade source required for workout step. -#define FIT_WORKOUT_CAPABILITIES_RESISTANCE ((FIT_WORKOUT_CAPABILITIES)0x00002000) // Resistance source required for workout step. -#define FIT_WORKOUT_CAPABILITIES_PROTECTED ((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_BATTERY_STATUS)1) -#define FIT_BATTERY_STATUS_GOOD ((FIT_BATTERY_STATUS)2) -#define FIT_BATTERY_STATUS_OK ((FIT_BATTERY_STATUS)3) -#define FIT_BATTERY_STATUS_LOW ((FIT_BATTERY_STATUS)4) -#define FIT_BATTERY_STATUS_CRITICAL ((FIT_BATTERY_STATUS)5) -#define FIT_BATTERY_STATUS_CHARGING ((FIT_BATTERY_STATUS)6) -#define FIT_BATTERY_STATUS_UNKNOWN ((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_HR_TYPE)0) -#define FIT_HR_TYPE_IRREGULAR ((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_COURSE_CAPABILITIES)0x00000001) -#define FIT_COURSE_CAPABILITIES_VALID ((FIT_COURSE_CAPABILITIES)0x00000002) -#define FIT_COURSE_CAPABILITIES_TIME ((FIT_COURSE_CAPABILITIES)0x00000004) -#define FIT_COURSE_CAPABILITIES_DISTANCE ((FIT_COURSE_CAPABILITIES)0x00000008) -#define FIT_COURSE_CAPABILITIES_POSITION ((FIT_COURSE_CAPABILITIES)0x00000010) -#define FIT_COURSE_CAPABILITIES_HEART_RATE ((FIT_COURSE_CAPABILITIES)0x00000020) -#define FIT_COURSE_CAPABILITIES_POWER ((FIT_COURSE_CAPABILITIES)0x00000040) -#define FIT_COURSE_CAPABILITIES_CADENCE ((FIT_COURSE_CAPABILITIES)0x00000080) -#define FIT_COURSE_CAPABILITIES_TRAINING ((FIT_COURSE_CAPABILITIES)0x00000100) -#define FIT_COURSE_CAPABILITIES_NAVIGATION ((FIT_COURSE_CAPABILITIES)0x00000200) -#define FIT_COURSE_CAPABILITIES_BIKEWAY ((FIT_COURSE_CAPABILITIES)0x00000400) -#define FIT_COURSE_CAPABILITIES_COUNT 11 - -typedef FIT_UINT16 FIT_WEIGHT; -#define FIT_WEIGHT_INVALID FIT_UINT16_INVALID -#define FIT_WEIGHT_CALCULATING ((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_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_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_BP_STATUS)0) -#define FIT_BP_STATUS_ERROR_INCOMPLETE_DATA ((FIT_BP_STATUS)1) -#define FIT_BP_STATUS_ERROR_NO_MEASUREMENT ((FIT_BP_STATUS)2) -#define FIT_BP_STATUS_ERROR_DATA_OUT_OF_RANGE ((FIT_BP_STATUS)3) -#define FIT_BP_STATUS_ERROR_IRREGULAR_HEART_RATE ((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_USER_LOCAL_ID)0x0000) -#define FIT_USER_LOCAL_ID_LOCAL_MAX ((FIT_USER_LOCAL_ID)0x000F) -#define FIT_USER_LOCAL_ID_STATIONARY_MIN ((FIT_USER_LOCAL_ID)0x0010) -#define FIT_USER_LOCAL_ID_STATIONARY_MAX ((FIT_USER_LOCAL_ID)0x00FF) -#define FIT_USER_LOCAL_ID_PORTABLE_MIN ((FIT_USER_LOCAL_ID)0x0100) -#define FIT_USER_LOCAL_ID_PORTABLE_MAX ((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_SWIM_STROKE)0) -#define FIT_SWIM_STROKE_BACKSTROKE ((FIT_SWIM_STROKE)1) -#define FIT_SWIM_STROKE_BREASTSTROKE ((FIT_SWIM_STROKE)2) -#define FIT_SWIM_STROKE_BUTTERFLY ((FIT_SWIM_STROKE)3) -#define FIT_SWIM_STROKE_DRILL ((FIT_SWIM_STROKE)4) -#define FIT_SWIM_STROKE_MIXED ((FIT_SWIM_STROKE)5) -#define FIT_SWIM_STROKE_IM ((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_COUNT 7 - -typedef FIT_ENUM FIT_ACTIVITY_TYPE; -#define FIT_ACTIVITY_TYPE_INVALID FIT_ENUM_INVALID -#define FIT_ACTIVITY_TYPE_GENERIC ((FIT_ACTIVITY_TYPE)0) -#define FIT_ACTIVITY_TYPE_RUNNING ((FIT_ACTIVITY_TYPE)1) -#define FIT_ACTIVITY_TYPE_CYCLING ((FIT_ACTIVITY_TYPE)2) -#define FIT_ACTIVITY_TYPE_TRANSITION ((FIT_ACTIVITY_TYPE)3) // Mulitsport transition -#define FIT_ACTIVITY_TYPE_FITNESS_EQUIPMENT ((FIT_ACTIVITY_TYPE)4) -#define FIT_ACTIVITY_TYPE_SWIMMING ((FIT_ACTIVITY_TYPE)5) -#define FIT_ACTIVITY_TYPE_WALKING ((FIT_ACTIVITY_TYPE)6) -#define FIT_ACTIVITY_TYPE_SEDENTARY ((FIT_ACTIVITY_TYPE)8) -#define FIT_ACTIVITY_TYPE_ALL ((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_ACTIVITY_SUBTYPE)0) -#define FIT_ACTIVITY_SUBTYPE_TREADMILL ((FIT_ACTIVITY_SUBTYPE)1) // Run -#define FIT_ACTIVITY_SUBTYPE_STREET ((FIT_ACTIVITY_SUBTYPE)2) // Run -#define FIT_ACTIVITY_SUBTYPE_TRAIL ((FIT_ACTIVITY_SUBTYPE)3) // Run -#define FIT_ACTIVITY_SUBTYPE_TRACK ((FIT_ACTIVITY_SUBTYPE)4) // Run -#define FIT_ACTIVITY_SUBTYPE_SPIN ((FIT_ACTIVITY_SUBTYPE)5) // Cycling -#define FIT_ACTIVITY_SUBTYPE_INDOOR_CYCLING ((FIT_ACTIVITY_SUBTYPE)6) // Cycling -#define FIT_ACTIVITY_SUBTYPE_ROAD ((FIT_ACTIVITY_SUBTYPE)7) // Cycling -#define FIT_ACTIVITY_SUBTYPE_MOUNTAIN ((FIT_ACTIVITY_SUBTYPE)8) // Cycling -#define FIT_ACTIVITY_SUBTYPE_DOWNHILL ((FIT_ACTIVITY_SUBTYPE)9) // Cycling -#define FIT_ACTIVITY_SUBTYPE_RECUMBENT ((FIT_ACTIVITY_SUBTYPE)10) // Cycling -#define FIT_ACTIVITY_SUBTYPE_CYCLOCROSS ((FIT_ACTIVITY_SUBTYPE)11) // Cycling -#define FIT_ACTIVITY_SUBTYPE_HAND_CYCLING ((FIT_ACTIVITY_SUBTYPE)12) // Cycling -#define FIT_ACTIVITY_SUBTYPE_TRACK_CYCLING ((FIT_ACTIVITY_SUBTYPE)13) // Cycling -#define FIT_ACTIVITY_SUBTYPE_INDOOR_ROWING ((FIT_ACTIVITY_SUBTYPE)14) // Fitness Equipment -#define FIT_ACTIVITY_SUBTYPE_ELLIPTICAL ((FIT_ACTIVITY_SUBTYPE)15) // Fitness Equipment -#define FIT_ACTIVITY_SUBTYPE_STAIR_CLIMBING ((FIT_ACTIVITY_SUBTYPE)16) // Fitness Equipment -#define FIT_ACTIVITY_SUBTYPE_LAP_SWIMMING ((FIT_ACTIVITY_SUBTYPE)17) // Swimming -#define FIT_ACTIVITY_SUBTYPE_OPEN_WATER ((FIT_ACTIVITY_SUBTYPE)18) // Swimming -#define FIT_ACTIVITY_SUBTYPE_ALL ((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_ACTIVITY_LEVEL)0) -#define FIT_ACTIVITY_LEVEL_MEDIUM ((FIT_ACTIVITY_LEVEL)1) -#define FIT_ACTIVITY_LEVEL_HIGH ((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_SIDE)0) -#define FIT_SIDE_LEFT ((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_LEFT_RIGHT_BALANCE)0x7F) // % contribution -#define FIT_LEFT_RIGHT_BALANCE_RIGHT ((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_LEFT_RIGHT_BALANCE_100)0x3FFF) // % contribution scaled by 100 -#define FIT_LEFT_RIGHT_BALANCE_100_RIGHT ((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_LENGTH_TYPE)0) // Rest period. Length with no strokes -#define FIT_LENGTH_TYPE_ACTIVE ((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_DAY_OF_WEEK)0) -#define FIT_DAY_OF_WEEK_MONDAY ((FIT_DAY_OF_WEEK)1) -#define FIT_DAY_OF_WEEK_TUESDAY ((FIT_DAY_OF_WEEK)2) -#define FIT_DAY_OF_WEEK_WEDNESDAY ((FIT_DAY_OF_WEEK)3) -#define FIT_DAY_OF_WEEK_THURSDAY ((FIT_DAY_OF_WEEK)4) -#define FIT_DAY_OF_WEEK_FRIDAY ((FIT_DAY_OF_WEEK)5) -#define FIT_DAY_OF_WEEK_SATURDAY ((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_CONNECTIVITY_CAPABILITIES)0x00000001) -#define FIT_CONNECTIVITY_CAPABILITIES_BLUETOOTH_LE ((FIT_CONNECTIVITY_CAPABILITIES)0x00000002) -#define FIT_CONNECTIVITY_CAPABILITIES_ANT ((FIT_CONNECTIVITY_CAPABILITIES)0x00000004) -#define FIT_CONNECTIVITY_CAPABILITIES_ACTIVITY_UPLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00000008) -#define FIT_CONNECTIVITY_CAPABILITIES_COURSE_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00000010) -#define FIT_CONNECTIVITY_CAPABILITIES_WORKOUT_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00000020) -#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK ((FIT_CONNECTIVITY_CAPABILITIES)0x00000040) -#define FIT_CONNECTIVITY_CAPABILITIES_WEATHER_CONDITIONS ((FIT_CONNECTIVITY_CAPABILITIES)0x00000080) -#define FIT_CONNECTIVITY_CAPABILITIES_WEATHER_ALERTS ((FIT_CONNECTIVITY_CAPABILITIES)0x00000100) -#define FIT_CONNECTIVITY_CAPABILITIES_GPS_EPHEMERIS_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00000200) -#define FIT_CONNECTIVITY_CAPABILITIES_EXPLICIT_ARCHIVE ((FIT_CONNECTIVITY_CAPABILITIES)0x00000400) -#define FIT_CONNECTIVITY_CAPABILITIES_SETUP_INCOMPLETE ((FIT_CONNECTIVITY_CAPABILITIES)0x00000800) -#define FIT_CONNECTIVITY_CAPABILITIES_CONTINUE_SYNC_AFTER_SOFTWARE_UPDATE ((FIT_CONNECTIVITY_CAPABILITIES)0x00001000) -#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_APP_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00002000) -#define FIT_CONNECTIVITY_CAPABILITIES_GOLF_COURSE_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00004000) -#define FIT_CONNECTIVITY_CAPABILITIES_DEVICE_INITIATES_SYNC ((FIT_CONNECTIVITY_CAPABILITIES)0x00008000) // Indicates device is in control of initiating all syncs -#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WATCH_APP_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00010000) -#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WIDGET_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00020000) -#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WATCH_FACE_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00040000) -#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_DATA_FIELD_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00080000) -#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_APP_MANAGMENT ((FIT_CONNECTIVITY_CAPABILITIES)0x00100000) // Device supports delete and reorder of apps via GCM -#define FIT_CONNECTIVITY_CAPABILITIES_SWING_SENSOR ((FIT_CONNECTIVITY_CAPABILITIES)0x00200000) -#define FIT_CONNECTIVITY_CAPABILITIES_SWING_SENSOR_REMOTE ((FIT_CONNECTIVITY_CAPABILITIES)0x00400000) -#define FIT_CONNECTIVITY_CAPABILITIES_INCIDENT_DETECTION ((FIT_CONNECTIVITY_CAPABILITIES)0x00800000) // Device supports incident detection -#define FIT_CONNECTIVITY_CAPABILITIES_AUDIO_PROMPTS ((FIT_CONNECTIVITY_CAPABILITIES)0x01000000) -#define FIT_CONNECTIVITY_CAPABILITIES_WIFI_VERIFICATION ((FIT_CONNECTIVITY_CAPABILITIES)0x02000000) // Device supports reporting wifi verification via GCM -#define FIT_CONNECTIVITY_CAPABILITIES_TRUE_UP ((FIT_CONNECTIVITY_CAPABILITIES)0x04000000) // Device supports True Up -#define FIT_CONNECTIVITY_CAPABILITIES_FIND_MY_WATCH ((FIT_CONNECTIVITY_CAPABILITIES)0x08000000) // Device supports Find My Watch -#define FIT_CONNECTIVITY_CAPABILITIES_REMOTE_MANUAL_SYNC ((FIT_CONNECTIVITY_CAPABILITIES)0x10000000) -#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK_AUTO_START ((FIT_CONNECTIVITY_CAPABILITIES)0x20000000) // Device supports LiveTrack auto start -#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK_MESSAGING ((FIT_CONNECTIVITY_CAPABILITIES)0x40000000) // Device supports LiveTrack Messaging -#define FIT_CONNECTIVITY_CAPABILITIES_INSTANT_INPUT ((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_WEATHER_REPORT)0) -#define FIT_WEATHER_REPORT_FORECAST ((FIT_WEATHER_REPORT)1) // Deprecated use hourly_forecast instead -#define FIT_WEATHER_REPORT_HOURLY_FORECAST ((FIT_WEATHER_REPORT)1) -#define FIT_WEATHER_REPORT_DAILY_FORECAST ((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_WEATHER_STATUS)0) -#define FIT_WEATHER_STATUS_PARTLY_CLOUDY ((FIT_WEATHER_STATUS)1) -#define FIT_WEATHER_STATUS_MOSTLY_CLOUDY ((FIT_WEATHER_STATUS)2) -#define FIT_WEATHER_STATUS_RAIN ((FIT_WEATHER_STATUS)3) -#define FIT_WEATHER_STATUS_SNOW ((FIT_WEATHER_STATUS)4) -#define FIT_WEATHER_STATUS_WINDY ((FIT_WEATHER_STATUS)5) -#define FIT_WEATHER_STATUS_THUNDERSTORMS ((FIT_WEATHER_STATUS)6) -#define FIT_WEATHER_STATUS_WINTRY_MIX ((FIT_WEATHER_STATUS)7) -#define FIT_WEATHER_STATUS_FOG ((FIT_WEATHER_STATUS)8) -#define FIT_WEATHER_STATUS_HAZY ((FIT_WEATHER_STATUS)11) -#define FIT_WEATHER_STATUS_HAIL ((FIT_WEATHER_STATUS)12) -#define FIT_WEATHER_STATUS_SCATTERED_SHOWERS ((FIT_WEATHER_STATUS)13) -#define FIT_WEATHER_STATUS_SCATTERED_THUNDERSTORMS ((FIT_WEATHER_STATUS)14) -#define FIT_WEATHER_STATUS_UNKNOWN_PRECIPITATION ((FIT_WEATHER_STATUS)15) -#define FIT_WEATHER_STATUS_LIGHT_RAIN ((FIT_WEATHER_STATUS)16) -#define FIT_WEATHER_STATUS_HEAVY_RAIN ((FIT_WEATHER_STATUS)17) -#define FIT_WEATHER_STATUS_LIGHT_SNOW ((FIT_WEATHER_STATUS)18) -#define FIT_WEATHER_STATUS_HEAVY_SNOW ((FIT_WEATHER_STATUS)19) -#define FIT_WEATHER_STATUS_LIGHT_RAIN_SNOW ((FIT_WEATHER_STATUS)20) -#define FIT_WEATHER_STATUS_HEAVY_RAIN_SNOW ((FIT_WEATHER_STATUS)21) -#define FIT_WEATHER_STATUS_CLOUDY ((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_WEATHER_SEVERITY)0) -#define FIT_WEATHER_SEVERITY_WARNING ((FIT_WEATHER_SEVERITY)1) -#define FIT_WEATHER_SEVERITY_WATCH ((FIT_WEATHER_SEVERITY)2) -#define FIT_WEATHER_SEVERITY_ADVISORY ((FIT_WEATHER_SEVERITY)3) -#define FIT_WEATHER_SEVERITY_STATEMENT ((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_WEATHER_SEVERE_TYPE)0) -#define FIT_WEATHER_SEVERE_TYPE_TORNADO ((FIT_WEATHER_SEVERE_TYPE)1) -#define FIT_WEATHER_SEVERE_TYPE_TSUNAMI ((FIT_WEATHER_SEVERE_TYPE)2) -#define FIT_WEATHER_SEVERE_TYPE_HURRICANE ((FIT_WEATHER_SEVERE_TYPE)3) -#define FIT_WEATHER_SEVERE_TYPE_EXTREME_WIND ((FIT_WEATHER_SEVERE_TYPE)4) -#define FIT_WEATHER_SEVERE_TYPE_TYPHOON ((FIT_WEATHER_SEVERE_TYPE)5) -#define FIT_WEATHER_SEVERE_TYPE_INLAND_HURRICANE ((FIT_WEATHER_SEVERE_TYPE)6) -#define FIT_WEATHER_SEVERE_TYPE_HURRICANE_FORCE_WIND ((FIT_WEATHER_SEVERE_TYPE)7) -#define FIT_WEATHER_SEVERE_TYPE_WATERSPOUT ((FIT_WEATHER_SEVERE_TYPE)8) -#define FIT_WEATHER_SEVERE_TYPE_SEVERE_THUNDERSTORM ((FIT_WEATHER_SEVERE_TYPE)9) -#define FIT_WEATHER_SEVERE_TYPE_WRECKHOUSE_WINDS ((FIT_WEATHER_SEVERE_TYPE)10) -#define FIT_WEATHER_SEVERE_TYPE_LES_SUETES_WIND ((FIT_WEATHER_SEVERE_TYPE)11) -#define FIT_WEATHER_SEVERE_TYPE_AVALANCHE ((FIT_WEATHER_SEVERE_TYPE)12) -#define FIT_WEATHER_SEVERE_TYPE_FLASH_FLOOD ((FIT_WEATHER_SEVERE_TYPE)13) -#define FIT_WEATHER_SEVERE_TYPE_TROPICAL_STORM ((FIT_WEATHER_SEVERE_TYPE)14) -#define FIT_WEATHER_SEVERE_TYPE_INLAND_TROPICAL_STORM ((FIT_WEATHER_SEVERE_TYPE)15) -#define FIT_WEATHER_SEVERE_TYPE_BLIZZARD ((FIT_WEATHER_SEVERE_TYPE)16) -#define FIT_WEATHER_SEVERE_TYPE_ICE_STORM ((FIT_WEATHER_SEVERE_TYPE)17) -#define FIT_WEATHER_SEVERE_TYPE_FREEZING_RAIN ((FIT_WEATHER_SEVERE_TYPE)18) -#define FIT_WEATHER_SEVERE_TYPE_DEBRIS_FLOW ((FIT_WEATHER_SEVERE_TYPE)19) -#define FIT_WEATHER_SEVERE_TYPE_FLASH_FREEZE ((FIT_WEATHER_SEVERE_TYPE)20) -#define FIT_WEATHER_SEVERE_TYPE_DUST_STORM ((FIT_WEATHER_SEVERE_TYPE)21) -#define FIT_WEATHER_SEVERE_TYPE_HIGH_WIND ((FIT_WEATHER_SEVERE_TYPE)22) -#define FIT_WEATHER_SEVERE_TYPE_WINTER_STORM ((FIT_WEATHER_SEVERE_TYPE)23) -#define FIT_WEATHER_SEVERE_TYPE_HEAVY_FREEZING_SPRAY ((FIT_WEATHER_SEVERE_TYPE)24) -#define FIT_WEATHER_SEVERE_TYPE_EXTREME_COLD ((FIT_WEATHER_SEVERE_TYPE)25) -#define FIT_WEATHER_SEVERE_TYPE_WIND_CHILL ((FIT_WEATHER_SEVERE_TYPE)26) -#define FIT_WEATHER_SEVERE_TYPE_COLD_WAVE ((FIT_WEATHER_SEVERE_TYPE)27) -#define FIT_WEATHER_SEVERE_TYPE_HEAVY_SNOW_ALERT ((FIT_WEATHER_SEVERE_TYPE)28) -#define FIT_WEATHER_SEVERE_TYPE_LAKE_EFFECT_BLOWING_SNOW ((FIT_WEATHER_SEVERE_TYPE)29) -#define FIT_WEATHER_SEVERE_TYPE_SNOW_SQUALL ((FIT_WEATHER_SEVERE_TYPE)30) -#define FIT_WEATHER_SEVERE_TYPE_LAKE_EFFECT_SNOW ((FIT_WEATHER_SEVERE_TYPE)31) -#define FIT_WEATHER_SEVERE_TYPE_WINTER_WEATHER ((FIT_WEATHER_SEVERE_TYPE)32) -#define FIT_WEATHER_SEVERE_TYPE_SLEET ((FIT_WEATHER_SEVERE_TYPE)33) -#define FIT_WEATHER_SEVERE_TYPE_SNOWFALL ((FIT_WEATHER_SEVERE_TYPE)34) -#define FIT_WEATHER_SEVERE_TYPE_SNOW_AND_BLOWING_SNOW ((FIT_WEATHER_SEVERE_TYPE)35) -#define FIT_WEATHER_SEVERE_TYPE_BLOWING_SNOW ((FIT_WEATHER_SEVERE_TYPE)36) -#define FIT_WEATHER_SEVERE_TYPE_SNOW_ALERT ((FIT_WEATHER_SEVERE_TYPE)37) -#define FIT_WEATHER_SEVERE_TYPE_ARCTIC_OUTFLOW ((FIT_WEATHER_SEVERE_TYPE)38) -#define FIT_WEATHER_SEVERE_TYPE_FREEZING_DRIZZLE ((FIT_WEATHER_SEVERE_TYPE)39) -#define FIT_WEATHER_SEVERE_TYPE_STORM ((FIT_WEATHER_SEVERE_TYPE)40) -#define FIT_WEATHER_SEVERE_TYPE_STORM_SURGE ((FIT_WEATHER_SEVERE_TYPE)41) -#define FIT_WEATHER_SEVERE_TYPE_RAINFALL ((FIT_WEATHER_SEVERE_TYPE)42) -#define FIT_WEATHER_SEVERE_TYPE_AREAL_FLOOD ((FIT_WEATHER_SEVERE_TYPE)43) -#define FIT_WEATHER_SEVERE_TYPE_COASTAL_FLOOD ((FIT_WEATHER_SEVERE_TYPE)44) -#define FIT_WEATHER_SEVERE_TYPE_LAKESHORE_FLOOD ((FIT_WEATHER_SEVERE_TYPE)45) -#define FIT_WEATHER_SEVERE_TYPE_EXCESSIVE_HEAT ((FIT_WEATHER_SEVERE_TYPE)46) -#define FIT_WEATHER_SEVERE_TYPE_HEAT ((FIT_WEATHER_SEVERE_TYPE)47) -#define FIT_WEATHER_SEVERE_TYPE_WEATHER ((FIT_WEATHER_SEVERE_TYPE)48) -#define FIT_WEATHER_SEVERE_TYPE_HIGH_HEAT_AND_HUMIDITY ((FIT_WEATHER_SEVERE_TYPE)49) -#define FIT_WEATHER_SEVERE_TYPE_HUMIDEX_AND_HEALTH ((FIT_WEATHER_SEVERE_TYPE)50) -#define FIT_WEATHER_SEVERE_TYPE_HUMIDEX ((FIT_WEATHER_SEVERE_TYPE)51) -#define FIT_WEATHER_SEVERE_TYPE_GALE ((FIT_WEATHER_SEVERE_TYPE)52) -#define FIT_WEATHER_SEVERE_TYPE_FREEZING_SPRAY ((FIT_WEATHER_SEVERE_TYPE)53) -#define FIT_WEATHER_SEVERE_TYPE_SPECIAL_MARINE ((FIT_WEATHER_SEVERE_TYPE)54) -#define FIT_WEATHER_SEVERE_TYPE_SQUALL ((FIT_WEATHER_SEVERE_TYPE)55) -#define FIT_WEATHER_SEVERE_TYPE_STRONG_WIND ((FIT_WEATHER_SEVERE_TYPE)56) -#define FIT_WEATHER_SEVERE_TYPE_LAKE_WIND ((FIT_WEATHER_SEVERE_TYPE)57) -#define FIT_WEATHER_SEVERE_TYPE_MARINE_WEATHER ((FIT_WEATHER_SEVERE_TYPE)58) -#define FIT_WEATHER_SEVERE_TYPE_WIND ((FIT_WEATHER_SEVERE_TYPE)59) -#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_HAZARDOUS_SEAS ((FIT_WEATHER_SEVERE_TYPE)60) -#define FIT_WEATHER_SEVERE_TYPE_HAZARDOUS_SEAS ((FIT_WEATHER_SEVERE_TYPE)61) -#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT ((FIT_WEATHER_SEVERE_TYPE)62) -#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_WINDS ((FIT_WEATHER_SEVERE_TYPE)63) -#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_ROUGH_BAR ((FIT_WEATHER_SEVERE_TYPE)64) -#define FIT_WEATHER_SEVERE_TYPE_HIGH_WATER_LEVEL ((FIT_WEATHER_SEVERE_TYPE)65) -#define FIT_WEATHER_SEVERE_TYPE_ASHFALL ((FIT_WEATHER_SEVERE_TYPE)66) -#define FIT_WEATHER_SEVERE_TYPE_FREEZING_FOG ((FIT_WEATHER_SEVERE_TYPE)67) -#define FIT_WEATHER_SEVERE_TYPE_DENSE_FOG ((FIT_WEATHER_SEVERE_TYPE)68) -#define FIT_WEATHER_SEVERE_TYPE_DENSE_SMOKE ((FIT_WEATHER_SEVERE_TYPE)69) -#define FIT_WEATHER_SEVERE_TYPE_BLOWING_DUST ((FIT_WEATHER_SEVERE_TYPE)70) -#define FIT_WEATHER_SEVERE_TYPE_HARD_FREEZE ((FIT_WEATHER_SEVERE_TYPE)71) -#define FIT_WEATHER_SEVERE_TYPE_FREEZE ((FIT_WEATHER_SEVERE_TYPE)72) -#define FIT_WEATHER_SEVERE_TYPE_FROST ((FIT_WEATHER_SEVERE_TYPE)73) -#define FIT_WEATHER_SEVERE_TYPE_FIRE_WEATHER ((FIT_WEATHER_SEVERE_TYPE)74) -#define FIT_WEATHER_SEVERE_TYPE_FLOOD ((FIT_WEATHER_SEVERE_TYPE)75) -#define FIT_WEATHER_SEVERE_TYPE_RIP_TIDE ((FIT_WEATHER_SEVERE_TYPE)76) -#define FIT_WEATHER_SEVERE_TYPE_HIGH_SURF ((FIT_WEATHER_SEVERE_TYPE)77) -#define FIT_WEATHER_SEVERE_TYPE_SMOG ((FIT_WEATHER_SEVERE_TYPE)78) -#define FIT_WEATHER_SEVERE_TYPE_AIR_QUALITY ((FIT_WEATHER_SEVERE_TYPE)79) -#define FIT_WEATHER_SEVERE_TYPE_BRISK_WIND ((FIT_WEATHER_SEVERE_TYPE)80) -#define FIT_WEATHER_SEVERE_TYPE_AIR_STAGNATION ((FIT_WEATHER_SEVERE_TYPE)81) -#define FIT_WEATHER_SEVERE_TYPE_LOW_WATER ((FIT_WEATHER_SEVERE_TYPE)82) -#define FIT_WEATHER_SEVERE_TYPE_HYDROLOGICAL ((FIT_WEATHER_SEVERE_TYPE)83) -#define FIT_WEATHER_SEVERE_TYPE_SPECIAL_WEATHER ((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_STROKE_TYPE)0) -#define FIT_STROKE_TYPE_OTHER ((FIT_STROKE_TYPE)1) // stroke was detected but cannot be identified -#define FIT_STROKE_TYPE_SERVE ((FIT_STROKE_TYPE)2) -#define FIT_STROKE_TYPE_FOREHAND ((FIT_STROKE_TYPE)3) -#define FIT_STROKE_TYPE_BACKHAND ((FIT_STROKE_TYPE)4) -#define FIT_STROKE_TYPE_SMASH ((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_BODY_LOCATION)0) -#define FIT_BODY_LOCATION_LEFT_CALF ((FIT_BODY_LOCATION)1) -#define FIT_BODY_LOCATION_LEFT_SHIN ((FIT_BODY_LOCATION)2) -#define FIT_BODY_LOCATION_LEFT_HAMSTRING ((FIT_BODY_LOCATION)3) -#define FIT_BODY_LOCATION_LEFT_QUAD ((FIT_BODY_LOCATION)4) -#define FIT_BODY_LOCATION_LEFT_GLUTE ((FIT_BODY_LOCATION)5) -#define FIT_BODY_LOCATION_RIGHT_LEG ((FIT_BODY_LOCATION)6) -#define FIT_BODY_LOCATION_RIGHT_CALF ((FIT_BODY_LOCATION)7) -#define FIT_BODY_LOCATION_RIGHT_SHIN ((FIT_BODY_LOCATION)8) -#define FIT_BODY_LOCATION_RIGHT_HAMSTRING ((FIT_BODY_LOCATION)9) -#define FIT_BODY_LOCATION_RIGHT_QUAD ((FIT_BODY_LOCATION)10) -#define FIT_BODY_LOCATION_RIGHT_GLUTE ((FIT_BODY_LOCATION)11) -#define FIT_BODY_LOCATION_TORSO_BACK ((FIT_BODY_LOCATION)12) -#define FIT_BODY_LOCATION_LEFT_LOWER_BACK ((FIT_BODY_LOCATION)13) -#define FIT_BODY_LOCATION_LEFT_UPPER_BACK ((FIT_BODY_LOCATION)14) -#define FIT_BODY_LOCATION_RIGHT_LOWER_BACK ((FIT_BODY_LOCATION)15) -#define FIT_BODY_LOCATION_RIGHT_UPPER_BACK ((FIT_BODY_LOCATION)16) -#define FIT_BODY_LOCATION_TORSO_FRONT ((FIT_BODY_LOCATION)17) -#define FIT_BODY_LOCATION_LEFT_ABDOMEN ((FIT_BODY_LOCATION)18) -#define FIT_BODY_LOCATION_LEFT_CHEST ((FIT_BODY_LOCATION)19) -#define FIT_BODY_LOCATION_RIGHT_ABDOMEN ((FIT_BODY_LOCATION)20) -#define FIT_BODY_LOCATION_RIGHT_CHEST ((FIT_BODY_LOCATION)21) -#define FIT_BODY_LOCATION_LEFT_ARM ((FIT_BODY_LOCATION)22) -#define FIT_BODY_LOCATION_LEFT_SHOULDER ((FIT_BODY_LOCATION)23) -#define FIT_BODY_LOCATION_LEFT_BICEP ((FIT_BODY_LOCATION)24) -#define FIT_BODY_LOCATION_LEFT_TRICEP ((FIT_BODY_LOCATION)25) -#define FIT_BODY_LOCATION_LEFT_BRACHIORADIALIS ((FIT_BODY_LOCATION)26) // Left anterior forearm -#define FIT_BODY_LOCATION_LEFT_FOREARM_EXTENSORS ((FIT_BODY_LOCATION)27) // Left posterior forearm -#define FIT_BODY_LOCATION_RIGHT_ARM ((FIT_BODY_LOCATION)28) -#define FIT_BODY_LOCATION_RIGHT_SHOULDER ((FIT_BODY_LOCATION)29) -#define FIT_BODY_LOCATION_RIGHT_BICEP ((FIT_BODY_LOCATION)30) -#define FIT_BODY_LOCATION_RIGHT_TRICEP ((FIT_BODY_LOCATION)31) -#define FIT_BODY_LOCATION_RIGHT_BRACHIORADIALIS ((FIT_BODY_LOCATION)32) // Right anterior forearm -#define FIT_BODY_LOCATION_RIGHT_FOREARM_EXTENSORS ((FIT_BODY_LOCATION)33) // Right posterior forearm -#define FIT_BODY_LOCATION_NECK ((FIT_BODY_LOCATION)34) -#define FIT_BODY_LOCATION_THROAT ((FIT_BODY_LOCATION)35) -#define FIT_BODY_LOCATION_WAIST_MID_BACK ((FIT_BODY_LOCATION)36) -#define FIT_BODY_LOCATION_WAIST_FRONT ((FIT_BODY_LOCATION)37) -#define FIT_BODY_LOCATION_WAIST_LEFT ((FIT_BODY_LOCATION)38) -#define FIT_BODY_LOCATION_WAIST_RIGHT ((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_SEGMENT_LAP_STATUS)0) -#define FIT_SEGMENT_LAP_STATUS_FAIL ((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_SEGMENT_LEADERBOARD_TYPE)0) -#define FIT_SEGMENT_LEADERBOARD_TYPE_PERSONAL_BEST ((FIT_SEGMENT_LEADERBOARD_TYPE)1) -#define FIT_SEGMENT_LEADERBOARD_TYPE_CONNECTIONS ((FIT_SEGMENT_LEADERBOARD_TYPE)2) -#define FIT_SEGMENT_LEADERBOARD_TYPE_GROUP ((FIT_SEGMENT_LEADERBOARD_TYPE)3) -#define FIT_SEGMENT_LEADERBOARD_TYPE_CHALLENGER ((FIT_SEGMENT_LEADERBOARD_TYPE)4) -#define FIT_SEGMENT_LEADERBOARD_TYPE_KOM ((FIT_SEGMENT_LEADERBOARD_TYPE)5) -#define FIT_SEGMENT_LEADERBOARD_TYPE_QOM ((FIT_SEGMENT_LEADERBOARD_TYPE)6) -#define FIT_SEGMENT_LEADERBOARD_TYPE_PR ((FIT_SEGMENT_LEADERBOARD_TYPE)7) -#define FIT_SEGMENT_LEADERBOARD_TYPE_GOAL ((FIT_SEGMENT_LEADERBOARD_TYPE)8) -#define FIT_SEGMENT_LEADERBOARD_TYPE_RIVAL ((FIT_SEGMENT_LEADERBOARD_TYPE)9) -#define FIT_SEGMENT_LEADERBOARD_TYPE_CLUB_LEADER ((FIT_SEGMENT_LEADERBOARD_TYPE)10) -#define FIT_SEGMENT_LEADERBOARD_TYPE_COUNT 11 - -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_SEGMENT_DELETE_STATUS)0) -#define FIT_SEGMENT_DELETE_STATUS_DELETE_ONE ((FIT_SEGMENT_DELETE_STATUS)1) -#define FIT_SEGMENT_DELETE_STATUS_DELETE_ALL ((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_SEGMENT_SELECTION_TYPE)0) -#define FIT_SEGMENT_SELECTION_TYPE_SUGGESTED ((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_SOURCE_TYPE)0) // External device connected with ANT -#define FIT_SOURCE_TYPE_ANTPLUS ((FIT_SOURCE_TYPE)1) // External device connected with ANT+ -#define FIT_SOURCE_TYPE_BLUETOOTH ((FIT_SOURCE_TYPE)2) // External device connected with BT -#define FIT_SOURCE_TYPE_BLUETOOTH_LOW_ENERGY ((FIT_SOURCE_TYPE)3) // External device connected with BLE -#define FIT_SOURCE_TYPE_WIFI ((FIT_SOURCE_TYPE)4) // External device connected with Wifi -#define FIT_SOURCE_TYPE_LOCAL ((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_COUNT 0 - -typedef FIT_ENUM FIT_DISPLAY_ORIENTATION; -#define FIT_DISPLAY_ORIENTATION_INVALID FIT_ENUM_INVALID -#define FIT_DISPLAY_ORIENTATION_AUTO ((FIT_DISPLAY_ORIENTATION)0) // automatic if the device supports it -#define FIT_DISPLAY_ORIENTATION_PORTRAIT ((FIT_DISPLAY_ORIENTATION)1) -#define FIT_DISPLAY_ORIENTATION_LANDSCAPE ((FIT_DISPLAY_ORIENTATION)2) -#define FIT_DISPLAY_ORIENTATION_PORTRAIT_FLIPPED ((FIT_DISPLAY_ORIENTATION)3) // portrait mode but rotated 180 degrees -#define FIT_DISPLAY_ORIENTATION_LANDSCAPE_FLIPPED ((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_WORKOUT_EQUIPMENT)0) -#define FIT_WORKOUT_EQUIPMENT_SWIM_FINS ((FIT_WORKOUT_EQUIPMENT)1) -#define FIT_WORKOUT_EQUIPMENT_SWIM_KICKBOARD ((FIT_WORKOUT_EQUIPMENT)2) -#define FIT_WORKOUT_EQUIPMENT_SWIM_PADDLES ((FIT_WORKOUT_EQUIPMENT)3) -#define FIT_WORKOUT_EQUIPMENT_SWIM_PULL_BUOY ((FIT_WORKOUT_EQUIPMENT)4) -#define FIT_WORKOUT_EQUIPMENT_SWIM_SNORKEL ((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_WATCHFACE_MODE)0) -#define FIT_WATCHFACE_MODE_ANALOG ((FIT_WATCHFACE_MODE)1) -#define FIT_WATCHFACE_MODE_CONNECT_IQ ((FIT_WATCHFACE_MODE)2) -#define FIT_WATCHFACE_MODE_DISABLED ((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_DIGITAL_WATCHFACE_LAYOUT)0) -#define FIT_DIGITAL_WATCHFACE_LAYOUT_MODERN ((FIT_DIGITAL_WATCHFACE_LAYOUT)1) -#define FIT_DIGITAL_WATCHFACE_LAYOUT_BOLD ((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_ANALOG_WATCHFACE_LAYOUT)0) -#define FIT_ANALOG_WATCHFACE_LAYOUT_TRADITIONAL ((FIT_ANALOG_WATCHFACE_LAYOUT)1) -#define FIT_ANALOG_WATCHFACE_LAYOUT_MODERN ((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_RIDER_POSITION_TYPE)0) -#define FIT_RIDER_POSITION_TYPE_STANDING ((FIT_RIDER_POSITION_TYPE)1) -#define FIT_RIDER_POSITION_TYPE_TRANSITION_TO_SEATED ((FIT_RIDER_POSITION_TYPE)2) -#define FIT_RIDER_POSITION_TYPE_TRANSITION_TO_STANDING ((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_POWER_PHASE_TYPE)0) -#define FIT_POWER_PHASE_TYPE_POWER_PHASE_END_ANGLE ((FIT_POWER_PHASE_TYPE)1) -#define FIT_POWER_PHASE_TYPE_POWER_PHASE_ARC_LENGTH ((FIT_POWER_PHASE_TYPE)2) -#define FIT_POWER_PHASE_TYPE_POWER_PHASE_CENTER ((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_CAMERA_EVENT_TYPE)0) // Start of video recording -#define FIT_CAMERA_EVENT_TYPE_VIDEO_SPLIT ((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_CAMERA_EVENT_TYPE)2) // End of video recording -#define FIT_CAMERA_EVENT_TYPE_PHOTO_TAKEN ((FIT_CAMERA_EVENT_TYPE)3) // Still photo taken -#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_START ((FIT_CAMERA_EVENT_TYPE)4) -#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_SPLIT ((FIT_CAMERA_EVENT_TYPE)5) -#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_END ((FIT_CAMERA_EVENT_TYPE)6) -#define FIT_CAMERA_EVENT_TYPE_VIDEO_SPLIT_START ((FIT_CAMERA_EVENT_TYPE)7) // Mark of video file split start -#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_SPLIT_START ((FIT_CAMERA_EVENT_TYPE)8) -#define FIT_CAMERA_EVENT_TYPE_VIDEO_PAUSE ((FIT_CAMERA_EVENT_TYPE)11) // Mark when a video recording has been paused -#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_PAUSE ((FIT_CAMERA_EVENT_TYPE)12) -#define FIT_CAMERA_EVENT_TYPE_VIDEO_RESUME ((FIT_CAMERA_EVENT_TYPE)13) // Mark when a video recording has been resumed -#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_RESUME ((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_SENSOR_TYPE)0) -#define FIT_SENSOR_TYPE_GYROSCOPE ((FIT_SENSOR_TYPE)1) -#define FIT_SENSOR_TYPE_COMPASS ((FIT_SENSOR_TYPE)2) // Magnetometer -#define FIT_SENSOR_TYPE_BAROMETER ((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_BIKE_LIGHT_NETWORK_CONFIG_TYPE)0) -#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_INDIVIDUAL ((FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE)4) -#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_HIGH_VISIBILITY ((FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE)5) -#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_TRAIL ((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_COMM_TIMEOUT_TYPE)0) // Timeout pairing to any device -#define FIT_COMM_TIMEOUT_TYPE_PAIRING_TIMEOUT ((FIT_COMM_TIMEOUT_TYPE)1) // Timeout pairing to previously paired device -#define FIT_COMM_TIMEOUT_TYPE_CONNECTION_LOST ((FIT_COMM_TIMEOUT_TYPE)2) // Temporary loss of communications -#define FIT_COMM_TIMEOUT_TYPE_CONNECTION_TIMEOUT ((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_CAMERA_ORIENTATION_TYPE)0) -#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_90 ((FIT_CAMERA_ORIENTATION_TYPE)1) -#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_180 ((FIT_CAMERA_ORIENTATION_TYPE)2) -#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_270 ((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_ATTITUDE_STAGE)0) -#define FIT_ATTITUDE_STAGE_ALIGNING ((FIT_ATTITUDE_STAGE)1) -#define FIT_ATTITUDE_STAGE_DEGRADED ((FIT_ATTITUDE_STAGE)2) -#define FIT_ATTITUDE_STAGE_VALID ((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_ATTITUDE_VALIDITY)0x0001) -#define FIT_ATTITUDE_VALIDITY_PITCH_VALID ((FIT_ATTITUDE_VALIDITY)0x0002) -#define FIT_ATTITUDE_VALIDITY_ROLL_VALID ((FIT_ATTITUDE_VALIDITY)0x0004) -#define FIT_ATTITUDE_VALIDITY_LATERAL_BODY_ACCEL_VALID ((FIT_ATTITUDE_VALIDITY)0x0008) -#define FIT_ATTITUDE_VALIDITY_NORMAL_BODY_ACCEL_VALID ((FIT_ATTITUDE_VALIDITY)0x0010) -#define FIT_ATTITUDE_VALIDITY_TURN_RATE_VALID ((FIT_ATTITUDE_VALIDITY)0x0020) -#define FIT_ATTITUDE_VALIDITY_HW_FAIL ((FIT_ATTITUDE_VALIDITY)0x0040) -#define FIT_ATTITUDE_VALIDITY_MAG_INVALID ((FIT_ATTITUDE_VALIDITY)0x0080) -#define FIT_ATTITUDE_VALIDITY_NO_GPS ((FIT_ATTITUDE_VALIDITY)0x0100) -#define FIT_ATTITUDE_VALIDITY_GPS_INVALID ((FIT_ATTITUDE_VALIDITY)0x0200) -#define FIT_ATTITUDE_VALIDITY_SOLUTION_COASTING ((FIT_ATTITUDE_VALIDITY)0x0400) -#define FIT_ATTITUDE_VALIDITY_TRUE_TRACK_ANGLE ((FIT_ATTITUDE_VALIDITY)0x0800) -#define FIT_ATTITUDE_VALIDITY_MAGNETIC_HEADING ((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_AUTO_SYNC_FREQUENCY)0) -#define FIT_AUTO_SYNC_FREQUENCY_OCCASIONALLY ((FIT_AUTO_SYNC_FREQUENCY)1) -#define FIT_AUTO_SYNC_FREQUENCY_FREQUENT ((FIT_AUTO_SYNC_FREQUENCY)2) -#define FIT_AUTO_SYNC_FREQUENCY_ONCE_A_DAY ((FIT_AUTO_SYNC_FREQUENCY)3) -#define FIT_AUTO_SYNC_FREQUENCY_REMOTE ((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_EXD_LAYOUT)0) -#define FIT_EXD_LAYOUT_HALF_VERTICAL ((FIT_EXD_LAYOUT)1) -#define FIT_EXD_LAYOUT_HALF_HORIZONTAL ((FIT_EXD_LAYOUT)2) -#define FIT_EXD_LAYOUT_HALF_VERTICAL_RIGHT_SPLIT ((FIT_EXD_LAYOUT)3) -#define FIT_EXD_LAYOUT_HALF_HORIZONTAL_BOTTOM_SPLIT ((FIT_EXD_LAYOUT)4) -#define FIT_EXD_LAYOUT_FULL_QUARTER_SPLIT ((FIT_EXD_LAYOUT)5) -#define FIT_EXD_LAYOUT_HALF_VERTICAL_LEFT_SPLIT ((FIT_EXD_LAYOUT)6) -#define FIT_EXD_LAYOUT_HALF_HORIZONTAL_TOP_SPLIT ((FIT_EXD_LAYOUT)7) -#define FIT_EXD_LAYOUT_COUNT 8 - -typedef FIT_ENUM FIT_EXD_DISPLAY_TYPE; -#define FIT_EXD_DISPLAY_TYPE_INVALID FIT_ENUM_INVALID -#define FIT_EXD_DISPLAY_TYPE_NUMERICAL ((FIT_EXD_DISPLAY_TYPE)0) -#define FIT_EXD_DISPLAY_TYPE_SIMPLE ((FIT_EXD_DISPLAY_TYPE)1) -#define FIT_EXD_DISPLAY_TYPE_GRAPH ((FIT_EXD_DISPLAY_TYPE)2) -#define FIT_EXD_DISPLAY_TYPE_BAR ((FIT_EXD_DISPLAY_TYPE)3) -#define FIT_EXD_DISPLAY_TYPE_CIRCLE_GRAPH ((FIT_EXD_DISPLAY_TYPE)4) -#define FIT_EXD_DISPLAY_TYPE_VIRTUAL_PARTNER ((FIT_EXD_DISPLAY_TYPE)5) -#define FIT_EXD_DISPLAY_TYPE_BALANCE ((FIT_EXD_DISPLAY_TYPE)6) -#define FIT_EXD_DISPLAY_TYPE_STRING_LIST ((FIT_EXD_DISPLAY_TYPE)7) -#define FIT_EXD_DISPLAY_TYPE_STRING ((FIT_EXD_DISPLAY_TYPE)8) -#define FIT_EXD_DISPLAY_TYPE_SIMPLE_DYNAMIC_ICON ((FIT_EXD_DISPLAY_TYPE)9) -#define FIT_EXD_DISPLAY_TYPE_GAUGE ((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_EXD_DATA_UNITS)0) -#define FIT_EXD_DATA_UNITS_LAPS ((FIT_EXD_DATA_UNITS)1) -#define FIT_EXD_DATA_UNITS_MILES_PER_HOUR ((FIT_EXD_DATA_UNITS)2) -#define FIT_EXD_DATA_UNITS_KILOMETERS_PER_HOUR ((FIT_EXD_DATA_UNITS)3) -#define FIT_EXD_DATA_UNITS_FEET_PER_HOUR ((FIT_EXD_DATA_UNITS)4) -#define FIT_EXD_DATA_UNITS_METERS_PER_HOUR ((FIT_EXD_DATA_UNITS)5) -#define FIT_EXD_DATA_UNITS_DEGREES_CELSIUS ((FIT_EXD_DATA_UNITS)6) -#define FIT_EXD_DATA_UNITS_DEGREES_FARENHEIT ((FIT_EXD_DATA_UNITS)7) -#define FIT_EXD_DATA_UNITS_ZONE ((FIT_EXD_DATA_UNITS)8) -#define FIT_EXD_DATA_UNITS_GEAR ((FIT_EXD_DATA_UNITS)9) -#define FIT_EXD_DATA_UNITS_RPM ((FIT_EXD_DATA_UNITS)10) -#define FIT_EXD_DATA_UNITS_BPM ((FIT_EXD_DATA_UNITS)11) -#define FIT_EXD_DATA_UNITS_DEGREES ((FIT_EXD_DATA_UNITS)12) -#define FIT_EXD_DATA_UNITS_MILLIMETERS ((FIT_EXD_DATA_UNITS)13) -#define FIT_EXD_DATA_UNITS_METERS ((FIT_EXD_DATA_UNITS)14) -#define FIT_EXD_DATA_UNITS_KILOMETERS ((FIT_EXD_DATA_UNITS)15) -#define FIT_EXD_DATA_UNITS_FEET ((FIT_EXD_DATA_UNITS)16) -#define FIT_EXD_DATA_UNITS_YARDS ((FIT_EXD_DATA_UNITS)17) -#define FIT_EXD_DATA_UNITS_KILOFEET ((FIT_EXD_DATA_UNITS)18) -#define FIT_EXD_DATA_UNITS_MILES ((FIT_EXD_DATA_UNITS)19) -#define FIT_EXD_DATA_UNITS_TIME ((FIT_EXD_DATA_UNITS)20) -#define FIT_EXD_DATA_UNITS_ENUM_TURN_TYPE ((FIT_EXD_DATA_UNITS)21) -#define FIT_EXD_DATA_UNITS_PERCENT ((FIT_EXD_DATA_UNITS)22) -#define FIT_EXD_DATA_UNITS_WATTS ((FIT_EXD_DATA_UNITS)23) -#define FIT_EXD_DATA_UNITS_WATTS_PER_KILOGRAM ((FIT_EXD_DATA_UNITS)24) -#define FIT_EXD_DATA_UNITS_ENUM_BATTERY_STATUS ((FIT_EXD_DATA_UNITS)25) -#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_BEAM_ANGLE_MODE ((FIT_EXD_DATA_UNITS)26) -#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_BATTERY_STATUS ((FIT_EXD_DATA_UNITS)27) -#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_NETWORK_CONFIG_TYPE ((FIT_EXD_DATA_UNITS)28) -#define FIT_EXD_DATA_UNITS_LIGHTS ((FIT_EXD_DATA_UNITS)29) -#define FIT_EXD_DATA_UNITS_SECONDS ((FIT_EXD_DATA_UNITS)30) -#define FIT_EXD_DATA_UNITS_MINUTES ((FIT_EXD_DATA_UNITS)31) -#define FIT_EXD_DATA_UNITS_HOURS ((FIT_EXD_DATA_UNITS)32) -#define FIT_EXD_DATA_UNITS_CALORIES ((FIT_EXD_DATA_UNITS)33) -#define FIT_EXD_DATA_UNITS_KILOJOULES ((FIT_EXD_DATA_UNITS)34) -#define FIT_EXD_DATA_UNITS_MILLISECONDS ((FIT_EXD_DATA_UNITS)35) -#define FIT_EXD_DATA_UNITS_SECOND_PER_MILE ((FIT_EXD_DATA_UNITS)36) -#define FIT_EXD_DATA_UNITS_SECOND_PER_KILOMETER ((FIT_EXD_DATA_UNITS)37) -#define FIT_EXD_DATA_UNITS_CENTIMETER ((FIT_EXD_DATA_UNITS)38) -#define FIT_EXD_DATA_UNITS_ENUM_COURSE_POINT ((FIT_EXD_DATA_UNITS)39) -#define FIT_EXD_DATA_UNITS_BRADIANS ((FIT_EXD_DATA_UNITS)40) -#define FIT_EXD_DATA_UNITS_ENUM_SPORT ((FIT_EXD_DATA_UNITS)41) -#define FIT_EXD_DATA_UNITS_INCHES_HG ((FIT_EXD_DATA_UNITS)42) -#define FIT_EXD_DATA_UNITS_MM_HG ((FIT_EXD_DATA_UNITS)43) -#define FIT_EXD_DATA_UNITS_MBARS ((FIT_EXD_DATA_UNITS)44) -#define FIT_EXD_DATA_UNITS_HECTO_PASCALS ((FIT_EXD_DATA_UNITS)45) -#define FIT_EXD_DATA_UNITS_FEET_PER_MIN ((FIT_EXD_DATA_UNITS)46) -#define FIT_EXD_DATA_UNITS_METERS_PER_MIN ((FIT_EXD_DATA_UNITS)47) -#define FIT_EXD_DATA_UNITS_METERS_PER_SEC ((FIT_EXD_DATA_UNITS)48) -#define FIT_EXD_DATA_UNITS_EIGHT_CARDINAL ((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_EXD_QUALIFIERS)0) -#define FIT_EXD_QUALIFIERS_INSTANTANEOUS ((FIT_EXD_QUALIFIERS)1) -#define FIT_EXD_QUALIFIERS_AVERAGE ((FIT_EXD_QUALIFIERS)2) -#define FIT_EXD_QUALIFIERS_LAP ((FIT_EXD_QUALIFIERS)3) -#define FIT_EXD_QUALIFIERS_MAXIMUM ((FIT_EXD_QUALIFIERS)4) -#define FIT_EXD_QUALIFIERS_MAXIMUM_AVERAGE ((FIT_EXD_QUALIFIERS)5) -#define FIT_EXD_QUALIFIERS_MAXIMUM_LAP ((FIT_EXD_QUALIFIERS)6) -#define FIT_EXD_QUALIFIERS_LAST_LAP ((FIT_EXD_QUALIFIERS)7) -#define FIT_EXD_QUALIFIERS_AVERAGE_LAP ((FIT_EXD_QUALIFIERS)8) -#define FIT_EXD_QUALIFIERS_TO_DESTINATION ((FIT_EXD_QUALIFIERS)9) -#define FIT_EXD_QUALIFIERS_TO_GO ((FIT_EXD_QUALIFIERS)10) -#define FIT_EXD_QUALIFIERS_TO_NEXT ((FIT_EXD_QUALIFIERS)11) -#define FIT_EXD_QUALIFIERS_NEXT_COURSE_POINT ((FIT_EXD_QUALIFIERS)12) -#define FIT_EXD_QUALIFIERS_TOTAL ((FIT_EXD_QUALIFIERS)13) -#define FIT_EXD_QUALIFIERS_THREE_SECOND_AVERAGE ((FIT_EXD_QUALIFIERS)14) -#define FIT_EXD_QUALIFIERS_TEN_SECOND_AVERAGE ((FIT_EXD_QUALIFIERS)15) -#define FIT_EXD_QUALIFIERS_THIRTY_SECOND_AVERAGE ((FIT_EXD_QUALIFIERS)16) -#define FIT_EXD_QUALIFIERS_PERCENT_MAXIMUM ((FIT_EXD_QUALIFIERS)17) -#define FIT_EXD_QUALIFIERS_PERCENT_MAXIMUM_AVERAGE ((FIT_EXD_QUALIFIERS)18) -#define FIT_EXD_QUALIFIERS_LAP_PERCENT_MAXIMUM ((FIT_EXD_QUALIFIERS)19) -#define FIT_EXD_QUALIFIERS_ELAPSED ((FIT_EXD_QUALIFIERS)20) -#define FIT_EXD_QUALIFIERS_SUNRISE ((FIT_EXD_QUALIFIERS)21) -#define FIT_EXD_QUALIFIERS_SUNSET ((FIT_EXD_QUALIFIERS)22) -#define FIT_EXD_QUALIFIERS_COMPARED_TO_VIRTUAL_PARTNER ((FIT_EXD_QUALIFIERS)23) -#define FIT_EXD_QUALIFIERS_MAXIMUM_24H ((FIT_EXD_QUALIFIERS)24) -#define FIT_EXD_QUALIFIERS_MINIMUM_24H ((FIT_EXD_QUALIFIERS)25) -#define FIT_EXD_QUALIFIERS_MINIMUM ((FIT_EXD_QUALIFIERS)26) -#define FIT_EXD_QUALIFIERS_FIRST ((FIT_EXD_QUALIFIERS)27) -#define FIT_EXD_QUALIFIERS_SECOND ((FIT_EXD_QUALIFIERS)28) -#define FIT_EXD_QUALIFIERS_THIRD ((FIT_EXD_QUALIFIERS)29) -#define FIT_EXD_QUALIFIERS_SHIFTER ((FIT_EXD_QUALIFIERS)30) -#define FIT_EXD_QUALIFIERS_LAST_SPORT ((FIT_EXD_QUALIFIERS)31) -#define FIT_EXD_QUALIFIERS_MOVING ((FIT_EXD_QUALIFIERS)32) -#define FIT_EXD_QUALIFIERS_STOPPED ((FIT_EXD_QUALIFIERS)33) -#define FIT_EXD_QUALIFIERS_ESTIMATED_TOTAL ((FIT_EXD_QUALIFIERS)34) -#define FIT_EXD_QUALIFIERS_ZONE_9 ((FIT_EXD_QUALIFIERS)242) -#define FIT_EXD_QUALIFIERS_ZONE_8 ((FIT_EXD_QUALIFIERS)243) -#define FIT_EXD_QUALIFIERS_ZONE_7 ((FIT_EXD_QUALIFIERS)244) -#define FIT_EXD_QUALIFIERS_ZONE_6 ((FIT_EXD_QUALIFIERS)245) -#define FIT_EXD_QUALIFIERS_ZONE_5 ((FIT_EXD_QUALIFIERS)246) -#define FIT_EXD_QUALIFIERS_ZONE_4 ((FIT_EXD_QUALIFIERS)247) -#define FIT_EXD_QUALIFIERS_ZONE_3 ((FIT_EXD_QUALIFIERS)248) -#define FIT_EXD_QUALIFIERS_ZONE_2 ((FIT_EXD_QUALIFIERS)249) -#define FIT_EXD_QUALIFIERS_ZONE_1 ((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_EXD_DESCRIPTORS)0) -#define FIT_EXD_DESCRIPTORS_BEAM_ANGLE_STATUS ((FIT_EXD_DESCRIPTORS)1) -#define FIT_EXD_DESCRIPTORS_BATERY_LEVEL ((FIT_EXD_DESCRIPTORS)2) -#define FIT_EXD_DESCRIPTORS_LIGHT_NETWORK_MODE ((FIT_EXD_DESCRIPTORS)3) -#define FIT_EXD_DESCRIPTORS_NUMBER_LIGHTS_CONNECTED ((FIT_EXD_DESCRIPTORS)4) -#define FIT_EXD_DESCRIPTORS_CADENCE ((FIT_EXD_DESCRIPTORS)5) -#define FIT_EXD_DESCRIPTORS_DISTANCE ((FIT_EXD_DESCRIPTORS)6) -#define FIT_EXD_DESCRIPTORS_ESTIMATED_TIME_OF_ARRIVAL ((FIT_EXD_DESCRIPTORS)7) -#define FIT_EXD_DESCRIPTORS_HEADING ((FIT_EXD_DESCRIPTORS)8) -#define FIT_EXD_DESCRIPTORS_TIME ((FIT_EXD_DESCRIPTORS)9) -#define FIT_EXD_DESCRIPTORS_BATTERY_LEVEL ((FIT_EXD_DESCRIPTORS)10) -#define FIT_EXD_DESCRIPTORS_TRAINER_RESISTANCE ((FIT_EXD_DESCRIPTORS)11) -#define FIT_EXD_DESCRIPTORS_TRAINER_TARGET_POWER ((FIT_EXD_DESCRIPTORS)12) -#define FIT_EXD_DESCRIPTORS_TIME_SEATED ((FIT_EXD_DESCRIPTORS)13) -#define FIT_EXD_DESCRIPTORS_TIME_STANDING ((FIT_EXD_DESCRIPTORS)14) -#define FIT_EXD_DESCRIPTORS_ELEVATION ((FIT_EXD_DESCRIPTORS)15) -#define FIT_EXD_DESCRIPTORS_GRADE ((FIT_EXD_DESCRIPTORS)16) -#define FIT_EXD_DESCRIPTORS_ASCENT ((FIT_EXD_DESCRIPTORS)17) -#define FIT_EXD_DESCRIPTORS_DESCENT ((FIT_EXD_DESCRIPTORS)18) -#define FIT_EXD_DESCRIPTORS_VERTICAL_SPEED ((FIT_EXD_DESCRIPTORS)19) -#define FIT_EXD_DESCRIPTORS_DI2_BATTERY_LEVEL ((FIT_EXD_DESCRIPTORS)20) -#define FIT_EXD_DESCRIPTORS_FRONT_GEAR ((FIT_EXD_DESCRIPTORS)21) -#define FIT_EXD_DESCRIPTORS_REAR_GEAR ((FIT_EXD_DESCRIPTORS)22) -#define FIT_EXD_DESCRIPTORS_GEAR_RATIO ((FIT_EXD_DESCRIPTORS)23) -#define FIT_EXD_DESCRIPTORS_HEART_RATE ((FIT_EXD_DESCRIPTORS)24) -#define FIT_EXD_DESCRIPTORS_HEART_RATE_ZONE ((FIT_EXD_DESCRIPTORS)25) -#define FIT_EXD_DESCRIPTORS_TIME_IN_HEART_RATE_ZONE ((FIT_EXD_DESCRIPTORS)26) -#define FIT_EXD_DESCRIPTORS_HEART_RATE_RESERVE ((FIT_EXD_DESCRIPTORS)27) -#define FIT_EXD_DESCRIPTORS_CALORIES ((FIT_EXD_DESCRIPTORS)28) -#define FIT_EXD_DESCRIPTORS_GPS_ACCURACY ((FIT_EXD_DESCRIPTORS)29) -#define FIT_EXD_DESCRIPTORS_GPS_SIGNAL_STRENGTH ((FIT_EXD_DESCRIPTORS)30) -#define FIT_EXD_DESCRIPTORS_TEMPERATURE ((FIT_EXD_DESCRIPTORS)31) -#define FIT_EXD_DESCRIPTORS_TIME_OF_DAY ((FIT_EXD_DESCRIPTORS)32) -#define FIT_EXD_DESCRIPTORS_BALANCE ((FIT_EXD_DESCRIPTORS)33) -#define FIT_EXD_DESCRIPTORS_PEDAL_SMOOTHNESS ((FIT_EXD_DESCRIPTORS)34) -#define FIT_EXD_DESCRIPTORS_POWER ((FIT_EXD_DESCRIPTORS)35) -#define FIT_EXD_DESCRIPTORS_FUNCTIONAL_THRESHOLD_POWER ((FIT_EXD_DESCRIPTORS)36) -#define FIT_EXD_DESCRIPTORS_INTENSITY_FACTOR ((FIT_EXD_DESCRIPTORS)37) -#define FIT_EXD_DESCRIPTORS_WORK ((FIT_EXD_DESCRIPTORS)38) -#define FIT_EXD_DESCRIPTORS_POWER_RATIO ((FIT_EXD_DESCRIPTORS)39) -#define FIT_EXD_DESCRIPTORS_NORMALIZED_POWER ((FIT_EXD_DESCRIPTORS)40) -#define FIT_EXD_DESCRIPTORS_TRAINING_STRESS_SCORE ((FIT_EXD_DESCRIPTORS)41) -#define FIT_EXD_DESCRIPTORS_TIME_ON_ZONE ((FIT_EXD_DESCRIPTORS)42) -#define FIT_EXD_DESCRIPTORS_SPEED ((FIT_EXD_DESCRIPTORS)43) -#define FIT_EXD_DESCRIPTORS_LAPS ((FIT_EXD_DESCRIPTORS)44) -#define FIT_EXD_DESCRIPTORS_REPS ((FIT_EXD_DESCRIPTORS)45) -#define FIT_EXD_DESCRIPTORS_WORKOUT_STEP ((FIT_EXD_DESCRIPTORS)46) -#define FIT_EXD_DESCRIPTORS_COURSE_DISTANCE ((FIT_EXD_DESCRIPTORS)47) -#define FIT_EXD_DESCRIPTORS_NAVIGATION_DISTANCE ((FIT_EXD_DESCRIPTORS)48) -#define FIT_EXD_DESCRIPTORS_COURSE_ESTIMATED_TIME_OF_ARRIVAL ((FIT_EXD_DESCRIPTORS)49) -#define FIT_EXD_DESCRIPTORS_NAVIGATION_ESTIMATED_TIME_OF_ARRIVAL ((FIT_EXD_DESCRIPTORS)50) -#define FIT_EXD_DESCRIPTORS_COURSE_TIME ((FIT_EXD_DESCRIPTORS)51) -#define FIT_EXD_DESCRIPTORS_NAVIGATION_TIME ((FIT_EXD_DESCRIPTORS)52) -#define FIT_EXD_DESCRIPTORS_COURSE_HEADING ((FIT_EXD_DESCRIPTORS)53) -#define FIT_EXD_DESCRIPTORS_NAVIGATION_HEADING ((FIT_EXD_DESCRIPTORS)54) -#define FIT_EXD_DESCRIPTORS_POWER_ZONE ((FIT_EXD_DESCRIPTORS)55) -#define FIT_EXD_DESCRIPTORS_TORQUE_EFFECTIVENESS ((FIT_EXD_DESCRIPTORS)56) -#define FIT_EXD_DESCRIPTORS_TIMER_TIME ((FIT_EXD_DESCRIPTORS)57) -#define FIT_EXD_DESCRIPTORS_POWER_WEIGHT_RATIO ((FIT_EXD_DESCRIPTORS)58) -#define FIT_EXD_DESCRIPTORS_LEFT_PLATFORM_CENTER_OFFSET ((FIT_EXD_DESCRIPTORS)59) -#define FIT_EXD_DESCRIPTORS_RIGHT_PLATFORM_CENTER_OFFSET ((FIT_EXD_DESCRIPTORS)60) -#define FIT_EXD_DESCRIPTORS_LEFT_POWER_PHASE_START_ANGLE ((FIT_EXD_DESCRIPTORS)61) -#define FIT_EXD_DESCRIPTORS_RIGHT_POWER_PHASE_START_ANGLE ((FIT_EXD_DESCRIPTORS)62) -#define FIT_EXD_DESCRIPTORS_LEFT_POWER_PHASE_FINISH_ANGLE ((FIT_EXD_DESCRIPTORS)63) -#define FIT_EXD_DESCRIPTORS_RIGHT_POWER_PHASE_FINISH_ANGLE ((FIT_EXD_DESCRIPTORS)64) -#define FIT_EXD_DESCRIPTORS_GEARS ((FIT_EXD_DESCRIPTORS)65) // Combined gear information -#define FIT_EXD_DESCRIPTORS_PACE ((FIT_EXD_DESCRIPTORS)66) -#define FIT_EXD_DESCRIPTORS_TRAINING_EFFECT ((FIT_EXD_DESCRIPTORS)67) -#define FIT_EXD_DESCRIPTORS_VERTICAL_OSCILLATION ((FIT_EXD_DESCRIPTORS)68) -#define FIT_EXD_DESCRIPTORS_VERTICAL_RATIO ((FIT_EXD_DESCRIPTORS)69) -#define FIT_EXD_DESCRIPTORS_GROUND_CONTACT_TIME ((FIT_EXD_DESCRIPTORS)70) -#define FIT_EXD_DESCRIPTORS_LEFT_GROUND_CONTACT_TIME_BALANCE ((FIT_EXD_DESCRIPTORS)71) -#define FIT_EXD_DESCRIPTORS_RIGHT_GROUND_CONTACT_TIME_BALANCE ((FIT_EXD_DESCRIPTORS)72) -#define FIT_EXD_DESCRIPTORS_STRIDE_LENGTH ((FIT_EXD_DESCRIPTORS)73) -#define FIT_EXD_DESCRIPTORS_RUNNING_CADENCE ((FIT_EXD_DESCRIPTORS)74) -#define FIT_EXD_DESCRIPTORS_PERFORMANCE_CONDITION ((FIT_EXD_DESCRIPTORS)75) -#define FIT_EXD_DESCRIPTORS_COURSE_TYPE ((FIT_EXD_DESCRIPTORS)76) -#define FIT_EXD_DESCRIPTORS_TIME_IN_POWER_ZONE ((FIT_EXD_DESCRIPTORS)77) -#define FIT_EXD_DESCRIPTORS_NAVIGATION_TURN ((FIT_EXD_DESCRIPTORS)78) -#define FIT_EXD_DESCRIPTORS_COURSE_LOCATION ((FIT_EXD_DESCRIPTORS)79) -#define FIT_EXD_DESCRIPTORS_NAVIGATION_LOCATION ((FIT_EXD_DESCRIPTORS)80) -#define FIT_EXD_DESCRIPTORS_COMPASS ((FIT_EXD_DESCRIPTORS)81) -#define FIT_EXD_DESCRIPTORS_GEAR_COMBO ((FIT_EXD_DESCRIPTORS)82) -#define FIT_EXD_DESCRIPTORS_MUSCLE_OXYGEN ((FIT_EXD_DESCRIPTORS)83) -#define FIT_EXD_DESCRIPTORS_ICON ((FIT_EXD_DESCRIPTORS)84) -#define FIT_EXD_DESCRIPTORS_COMPASS_HEADING ((FIT_EXD_DESCRIPTORS)85) -#define FIT_EXD_DESCRIPTORS_GPS_HEADING ((FIT_EXD_DESCRIPTORS)86) -#define FIT_EXD_DESCRIPTORS_GPS_ELEVATION ((FIT_EXD_DESCRIPTORS)87) -#define FIT_EXD_DESCRIPTORS_ANAEROBIC_TRAINING_EFFECT ((FIT_EXD_DESCRIPTORS)88) -#define FIT_EXD_DESCRIPTORS_COURSE ((FIT_EXD_DESCRIPTORS)89) -#define FIT_EXD_DESCRIPTORS_OFF_COURSE ((FIT_EXD_DESCRIPTORS)90) -#define FIT_EXD_DESCRIPTORS_GLIDE_RATIO ((FIT_EXD_DESCRIPTORS)91) -#define FIT_EXD_DESCRIPTORS_VERTICAL_DISTANCE ((FIT_EXD_DESCRIPTORS)92) -#define FIT_EXD_DESCRIPTORS_VMG ((FIT_EXD_DESCRIPTORS)93) -#define FIT_EXD_DESCRIPTORS_AMBIENT_PRESSURE ((FIT_EXD_DESCRIPTORS)94) -#define FIT_EXD_DESCRIPTORS_PRESSURE ((FIT_EXD_DESCRIPTORS)95) -#define FIT_EXD_DESCRIPTORS_VAM ((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_AUTO_ACTIVITY_DETECT)0x00000000) -#define FIT_AUTO_ACTIVITY_DETECT_RUNNING ((FIT_AUTO_ACTIVITY_DETECT)0x00000001) -#define FIT_AUTO_ACTIVITY_DETECT_CYCLING ((FIT_AUTO_ACTIVITY_DETECT)0x00000002) -#define FIT_AUTO_ACTIVITY_DETECT_SWIMMING ((FIT_AUTO_ACTIVITY_DETECT)0x00000004) -#define FIT_AUTO_ACTIVITY_DETECT_WALKING ((FIT_AUTO_ACTIVITY_DETECT)0x00000008) -#define FIT_AUTO_ACTIVITY_DETECT_ELLIPTICAL ((FIT_AUTO_ACTIVITY_DETECT)0x00000020) -#define FIT_AUTO_ACTIVITY_DETECT_SEDENTARY ((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_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000001) -#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000002) -#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000004) -#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL_RIGHT_SPLIT ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000008) -#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL_BOTTOM_SPLIT ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000010) -#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_FULL_QUARTER_SPLIT ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000020) -#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL_LEFT_SPLIT ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000040) -#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL_TOP_SPLIT ((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_FIT_BASE_TYPE)0) -#define FIT_FIT_BASE_TYPE_SINT8 ((FIT_FIT_BASE_TYPE)1) -#define FIT_FIT_BASE_TYPE_UINT8 ((FIT_FIT_BASE_TYPE)2) -#define FIT_FIT_BASE_TYPE_SINT16 ((FIT_FIT_BASE_TYPE)131) -#define FIT_FIT_BASE_TYPE_UINT16 ((FIT_FIT_BASE_TYPE)132) -#define FIT_FIT_BASE_TYPE_SINT32 ((FIT_FIT_BASE_TYPE)133) -#define FIT_FIT_BASE_TYPE_UINT32 ((FIT_FIT_BASE_TYPE)134) -#define FIT_FIT_BASE_TYPE_STRING ((FIT_FIT_BASE_TYPE)7) -#define FIT_FIT_BASE_TYPE_FLOAT32 ((FIT_FIT_BASE_TYPE)136) -#define FIT_FIT_BASE_TYPE_FLOAT64 ((FIT_FIT_BASE_TYPE)137) -#define FIT_FIT_BASE_TYPE_UINT8Z ((FIT_FIT_BASE_TYPE)10) -#define FIT_FIT_BASE_TYPE_UINT16Z ((FIT_FIT_BASE_TYPE)139) -#define FIT_FIT_BASE_TYPE_UINT32Z ((FIT_FIT_BASE_TYPE)140) -#define FIT_FIT_BASE_TYPE_BYTE ((FIT_FIT_BASE_TYPE)13) -#define FIT_FIT_BASE_TYPE_SINT64 ((FIT_FIT_BASE_TYPE)142) -#define FIT_FIT_BASE_TYPE_UINT64 ((FIT_FIT_BASE_TYPE)143) -#define FIT_FIT_BASE_TYPE_UINT64Z ((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_TURN_TYPE)0) -#define FIT_TURN_TYPE_ARRIVING_LEFT_IDX ((FIT_TURN_TYPE)1) -#define FIT_TURN_TYPE_ARRIVING_RIGHT_IDX ((FIT_TURN_TYPE)2) -#define FIT_TURN_TYPE_ARRIVING_VIA_IDX ((FIT_TURN_TYPE)3) -#define FIT_TURN_TYPE_ARRIVING_VIA_LEFT_IDX ((FIT_TURN_TYPE)4) -#define FIT_TURN_TYPE_ARRIVING_VIA_RIGHT_IDX ((FIT_TURN_TYPE)5) -#define FIT_TURN_TYPE_BEAR_KEEP_LEFT_IDX ((FIT_TURN_TYPE)6) -#define FIT_TURN_TYPE_BEAR_KEEP_RIGHT_IDX ((FIT_TURN_TYPE)7) -#define FIT_TURN_TYPE_CONTINUE_IDX ((FIT_TURN_TYPE)8) -#define FIT_TURN_TYPE_EXIT_LEFT_IDX ((FIT_TURN_TYPE)9) -#define FIT_TURN_TYPE_EXIT_RIGHT_IDX ((FIT_TURN_TYPE)10) -#define FIT_TURN_TYPE_FERRY_IDX ((FIT_TURN_TYPE)11) -#define FIT_TURN_TYPE_ROUNDABOUT_45_IDX ((FIT_TURN_TYPE)12) -#define FIT_TURN_TYPE_ROUNDABOUT_90_IDX ((FIT_TURN_TYPE)13) -#define FIT_TURN_TYPE_ROUNDABOUT_135_IDX ((FIT_TURN_TYPE)14) -#define FIT_TURN_TYPE_ROUNDABOUT_180_IDX ((FIT_TURN_TYPE)15) -#define FIT_TURN_TYPE_ROUNDABOUT_225_IDX ((FIT_TURN_TYPE)16) -#define FIT_TURN_TYPE_ROUNDABOUT_270_IDX ((FIT_TURN_TYPE)17) -#define FIT_TURN_TYPE_ROUNDABOUT_315_IDX ((FIT_TURN_TYPE)18) -#define FIT_TURN_TYPE_ROUNDABOUT_360_IDX ((FIT_TURN_TYPE)19) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_45_IDX ((FIT_TURN_TYPE)20) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_90_IDX ((FIT_TURN_TYPE)21) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_135_IDX ((FIT_TURN_TYPE)22) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_180_IDX ((FIT_TURN_TYPE)23) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_225_IDX ((FIT_TURN_TYPE)24) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_270_IDX ((FIT_TURN_TYPE)25) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_315_IDX ((FIT_TURN_TYPE)26) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_360_IDX ((FIT_TURN_TYPE)27) -#define FIT_TURN_TYPE_ROUNDABOUT_GENERIC_IDX ((FIT_TURN_TYPE)28) -#define FIT_TURN_TYPE_ROUNDABOUT_NEG_GENERIC_IDX ((FIT_TURN_TYPE)29) -#define FIT_TURN_TYPE_SHARP_TURN_LEFT_IDX ((FIT_TURN_TYPE)30) -#define FIT_TURN_TYPE_SHARP_TURN_RIGHT_IDX ((FIT_TURN_TYPE)31) -#define FIT_TURN_TYPE_TURN_LEFT_IDX ((FIT_TURN_TYPE)32) -#define FIT_TURN_TYPE_TURN_RIGHT_IDX ((FIT_TURN_TYPE)33) -#define FIT_TURN_TYPE_UTURN_LEFT_IDX ((FIT_TURN_TYPE)34) -#define FIT_TURN_TYPE_UTURN_RIGHT_IDX ((FIT_TURN_TYPE)35) -#define FIT_TURN_TYPE_ICON_INV_IDX ((FIT_TURN_TYPE)36) -#define FIT_TURN_TYPE_ICON_IDX_CNT ((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_BIKE_LIGHT_BEAM_ANGLE_MODE)0) -#define FIT_BIKE_LIGHT_BEAM_ANGLE_MODE_AUTO ((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_FIT_BASE_UNIT)0) -#define FIT_FIT_BASE_UNIT_KILOGRAM ((FIT_FIT_BASE_UNIT)1) -#define FIT_FIT_BASE_UNIT_POUND ((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_SET_TYPE)0) -#define FIT_SET_TYPE_ACTIVE ((FIT_SET_TYPE)1) -#define FIT_SET_TYPE_COUNT 2 - -typedef FIT_UINT16 FIT_EXERCISE_CATEGORY; -#define FIT_EXERCISE_CATEGORY_INVALID FIT_UINT16_INVALID -#define FIT_EXERCISE_CATEGORY_BENCH_PRESS ((FIT_EXERCISE_CATEGORY)0) -#define FIT_EXERCISE_CATEGORY_CALF_RAISE ((FIT_EXERCISE_CATEGORY)1) -#define FIT_EXERCISE_CATEGORY_CARDIO ((FIT_EXERCISE_CATEGORY)2) -#define FIT_EXERCISE_CATEGORY_CARRY ((FIT_EXERCISE_CATEGORY)3) -#define FIT_EXERCISE_CATEGORY_CHOP ((FIT_EXERCISE_CATEGORY)4) -#define FIT_EXERCISE_CATEGORY_CORE ((FIT_EXERCISE_CATEGORY)5) -#define FIT_EXERCISE_CATEGORY_CRUNCH ((FIT_EXERCISE_CATEGORY)6) -#define FIT_EXERCISE_CATEGORY_CURL ((FIT_EXERCISE_CATEGORY)7) -#define FIT_EXERCISE_CATEGORY_DEADLIFT ((FIT_EXERCISE_CATEGORY)8) -#define FIT_EXERCISE_CATEGORY_FLYE ((FIT_EXERCISE_CATEGORY)9) -#define FIT_EXERCISE_CATEGORY_HIP_RAISE ((FIT_EXERCISE_CATEGORY)10) -#define FIT_EXERCISE_CATEGORY_HIP_STABILITY ((FIT_EXERCISE_CATEGORY)11) -#define FIT_EXERCISE_CATEGORY_HIP_SWING ((FIT_EXERCISE_CATEGORY)12) -#define FIT_EXERCISE_CATEGORY_HYPEREXTENSION ((FIT_EXERCISE_CATEGORY)13) -#define FIT_EXERCISE_CATEGORY_LATERAL_RAISE ((FIT_EXERCISE_CATEGORY)14) -#define FIT_EXERCISE_CATEGORY_LEG_CURL ((FIT_EXERCISE_CATEGORY)15) -#define FIT_EXERCISE_CATEGORY_LEG_RAISE ((FIT_EXERCISE_CATEGORY)16) -#define FIT_EXERCISE_CATEGORY_LUNGE ((FIT_EXERCISE_CATEGORY)17) -#define FIT_EXERCISE_CATEGORY_OLYMPIC_LIFT ((FIT_EXERCISE_CATEGORY)18) -#define FIT_EXERCISE_CATEGORY_PLANK ((FIT_EXERCISE_CATEGORY)19) -#define FIT_EXERCISE_CATEGORY_PLYO ((FIT_EXERCISE_CATEGORY)20) -#define FIT_EXERCISE_CATEGORY_PULL_UP ((FIT_EXERCISE_CATEGORY)21) -#define FIT_EXERCISE_CATEGORY_PUSH_UP ((FIT_EXERCISE_CATEGORY)22) -#define FIT_EXERCISE_CATEGORY_ROW ((FIT_EXERCISE_CATEGORY)23) -#define FIT_EXERCISE_CATEGORY_SHOULDER_PRESS ((FIT_EXERCISE_CATEGORY)24) -#define FIT_EXERCISE_CATEGORY_SHOULDER_STABILITY ((FIT_EXERCISE_CATEGORY)25) -#define FIT_EXERCISE_CATEGORY_SHRUG ((FIT_EXERCISE_CATEGORY)26) -#define FIT_EXERCISE_CATEGORY_SIT_UP ((FIT_EXERCISE_CATEGORY)27) -#define FIT_EXERCISE_CATEGORY_SQUAT ((FIT_EXERCISE_CATEGORY)28) -#define FIT_EXERCISE_CATEGORY_TOTAL_BODY ((FIT_EXERCISE_CATEGORY)29) -#define FIT_EXERCISE_CATEGORY_TRICEPS_EXTENSION ((FIT_EXERCISE_CATEGORY)30) -#define FIT_EXERCISE_CATEGORY_WARM_UP ((FIT_EXERCISE_CATEGORY)31) -#define FIT_EXERCISE_CATEGORY_RUN ((FIT_EXERCISE_CATEGORY)32) -#define FIT_EXERCISE_CATEGORY_UNKNOWN ((FIT_EXERCISE_CATEGORY)65534) -#define FIT_EXERCISE_CATEGORY_COUNT 34 - -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_BENCH_PRESS_EXERCISE_NAME)0) -#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)1) -#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_BOARD_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)2) -#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_FLOOR_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)3) -#define FIT_BENCH_PRESS_EXERCISE_NAME_CLOSE_GRIP_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)4) -#define FIT_BENCH_PRESS_EXERCISE_NAME_DECLINE_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)5) -#define FIT_BENCH_PRESS_EXERCISE_NAME_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)6) -#define FIT_BENCH_PRESS_EXERCISE_NAME_DUMBBELL_FLOOR_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)7) -#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)8) -#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)9) -#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_SMITH_MACHINE_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)10) -#define FIT_BENCH_PRESS_EXERCISE_NAME_ISOMETRIC_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)11) -#define FIT_BENCH_PRESS_EXERCISE_NAME_KETTLEBELL_CHEST_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)12) -#define FIT_BENCH_PRESS_EXERCISE_NAME_NEUTRAL_GRIP_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)13) -#define FIT_BENCH_PRESS_EXERCISE_NAME_NEUTRAL_GRIP_DUMBBELL_INCLINE_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)14) -#define FIT_BENCH_PRESS_EXERCISE_NAME_ONE_ARM_FLOOR_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)15) -#define FIT_BENCH_PRESS_EXERCISE_NAME_WEIGHTED_ONE_ARM_FLOOR_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)16) -#define FIT_BENCH_PRESS_EXERCISE_NAME_PARTIAL_LOCKOUT ((FIT_BENCH_PRESS_EXERCISE_NAME)17) -#define FIT_BENCH_PRESS_EXERCISE_NAME_REVERSE_GRIP_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)18) -#define FIT_BENCH_PRESS_EXERCISE_NAME_REVERSE_GRIP_INCLINE_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)19) -#define FIT_BENCH_PRESS_EXERCISE_NAME_SINGLE_ARM_CABLE_CHEST_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)20) -#define FIT_BENCH_PRESS_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)21) -#define FIT_BENCH_PRESS_EXERCISE_NAME_SMITH_MACHINE_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)22) -#define FIT_BENCH_PRESS_EXERCISE_NAME_SWISS_BALL_DUMBBELL_CHEST_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)23) -#define FIT_BENCH_PRESS_EXERCISE_NAME_TRIPLE_STOP_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)24) -#define FIT_BENCH_PRESS_EXERCISE_NAME_WIDE_GRIP_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)25) -#define FIT_BENCH_PRESS_EXERCISE_NAME_ALTERNATING_DUMBBELL_CHEST_PRESS ((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_CALF_RAISE_EXERCISE_NAME)0) -#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_WEIGHTED_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)1) -#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_SINGLE_LEG_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)2) -#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_WEIGHTED_SINGLE_LEG_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)3) -#define FIT_CALF_RAISE_EXERCISE_NAME_DONKEY_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)4) -#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_DONKEY_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)5) -#define FIT_CALF_RAISE_EXERCISE_NAME_SEATED_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)6) -#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SEATED_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)7) -#define FIT_CALF_RAISE_EXERCISE_NAME_SEATED_DUMBBELL_TOE_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)8) -#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_BENT_KNEE_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)9) -#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENT_KNEE_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)10) -#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_DECLINE_PUSH_UP ((FIT_CALF_RAISE_EXERCISE_NAME)11) -#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_DONKEY_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)12) -#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_DONKEY_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)13) -#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_KNEE_HOLD ((FIT_CALF_RAISE_EXERCISE_NAME)14) -#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_STANDING_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)15) -#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_STANDING_DUMBBELL_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)16) -#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_BARBELL_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)17) -#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)18) -#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_STANDING_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)19) -#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_DUMBBELL_CALF_RAISE ((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_CARDIO_EXERCISE_NAME)0) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_BOB_AND_WEAVE_CIRCLE ((FIT_CARDIO_EXERCISE_NAME)1) -#define FIT_CARDIO_EXERCISE_NAME_CARDIO_CORE_CRAWL ((FIT_CARDIO_EXERCISE_NAME)2) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_CARDIO_CORE_CRAWL ((FIT_CARDIO_EXERCISE_NAME)3) -#define FIT_CARDIO_EXERCISE_NAME_DOUBLE_UNDER ((FIT_CARDIO_EXERCISE_NAME)4) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_DOUBLE_UNDER ((FIT_CARDIO_EXERCISE_NAME)5) -#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE ((FIT_CARDIO_EXERCISE_NAME)6) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE ((FIT_CARDIO_EXERCISE_NAME)7) -#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE_CROSSOVER ((FIT_CARDIO_EXERCISE_NAME)8) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE_CROSSOVER ((FIT_CARDIO_EXERCISE_NAME)9) -#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE_JOG ((FIT_CARDIO_EXERCISE_NAME)10) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE_JOG ((FIT_CARDIO_EXERCISE_NAME)11) -#define FIT_CARDIO_EXERCISE_NAME_JUMPING_JACKS ((FIT_CARDIO_EXERCISE_NAME)12) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMPING_JACKS ((FIT_CARDIO_EXERCISE_NAME)13) -#define FIT_CARDIO_EXERCISE_NAME_SKI_MOGULS ((FIT_CARDIO_EXERCISE_NAME)14) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SKI_MOGULS ((FIT_CARDIO_EXERCISE_NAME)15) -#define FIT_CARDIO_EXERCISE_NAME_SPLIT_JACKS ((FIT_CARDIO_EXERCISE_NAME)16) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SPLIT_JACKS ((FIT_CARDIO_EXERCISE_NAME)17) -#define FIT_CARDIO_EXERCISE_NAME_SQUAT_JACKS ((FIT_CARDIO_EXERCISE_NAME)18) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SQUAT_JACKS ((FIT_CARDIO_EXERCISE_NAME)19) -#define FIT_CARDIO_EXERCISE_NAME_TRIPLE_UNDER ((FIT_CARDIO_EXERCISE_NAME)20) -#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_TRIPLE_UNDER ((FIT_CARDIO_EXERCISE_NAME)21) -#define FIT_CARDIO_EXERCISE_NAME_COUNT 22 - -typedef FIT_UINT16 FIT_CARRY_EXERCISE_NAME; -#define FIT_CARRY_EXERCISE_NAME_INVALID FIT_UINT16_INVALID -#define FIT_CARRY_EXERCISE_NAME_BAR_HOLDS ((FIT_CARRY_EXERCISE_NAME)0) -#define FIT_CARRY_EXERCISE_NAME_FARMERS_WALK ((FIT_CARRY_EXERCISE_NAME)1) -#define FIT_CARRY_EXERCISE_NAME_FARMERS_WALK_ON_TOES ((FIT_CARRY_EXERCISE_NAME)2) -#define FIT_CARRY_EXERCISE_NAME_HEX_DUMBBELL_HOLD ((FIT_CARRY_EXERCISE_NAME)3) -#define FIT_CARRY_EXERCISE_NAME_OVERHEAD_CARRY ((FIT_CARRY_EXERCISE_NAME)4) -#define FIT_CARRY_EXERCISE_NAME_COUNT 5 - -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_CHOP_EXERCISE_NAME)0) -#define FIT_CHOP_EXERCISE_NAME_CABLE_ROTATIONAL_LIFT ((FIT_CHOP_EXERCISE_NAME)1) -#define FIT_CHOP_EXERCISE_NAME_CABLE_WOODCHOP ((FIT_CHOP_EXERCISE_NAME)2) -#define FIT_CHOP_EXERCISE_NAME_CROSS_CHOP_TO_KNEE ((FIT_CHOP_EXERCISE_NAME)3) -#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_CROSS_CHOP_TO_KNEE ((FIT_CHOP_EXERCISE_NAME)4) -#define FIT_CHOP_EXERCISE_NAME_DUMBBELL_CHOP ((FIT_CHOP_EXERCISE_NAME)5) -#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATION ((FIT_CHOP_EXERCISE_NAME)6) -#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_HALF_KNEELING_ROTATION ((FIT_CHOP_EXERCISE_NAME)7) -#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATIONAL_CHOP ((FIT_CHOP_EXERCISE_NAME)8) -#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATIONAL_REVERSE_CHOP ((FIT_CHOP_EXERCISE_NAME)9) -#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_STABILITY_CHOP ((FIT_CHOP_EXERCISE_NAME)10) -#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_STABILITY_REVERSE_CHOP ((FIT_CHOP_EXERCISE_NAME)11) -#define FIT_CHOP_EXERCISE_NAME_KNEELING_ROTATIONAL_CHOP ((FIT_CHOP_EXERCISE_NAME)12) -#define FIT_CHOP_EXERCISE_NAME_KNEELING_ROTATIONAL_REVERSE_CHOP ((FIT_CHOP_EXERCISE_NAME)13) -#define FIT_CHOP_EXERCISE_NAME_KNEELING_STABILITY_CHOP ((FIT_CHOP_EXERCISE_NAME)14) -#define FIT_CHOP_EXERCISE_NAME_KNEELING_WOODCHOPPER ((FIT_CHOP_EXERCISE_NAME)15) -#define FIT_CHOP_EXERCISE_NAME_MEDICINE_BALL_WOOD_CHOPS ((FIT_CHOP_EXERCISE_NAME)16) -#define FIT_CHOP_EXERCISE_NAME_POWER_SQUAT_CHOPS ((FIT_CHOP_EXERCISE_NAME)17) -#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_POWER_SQUAT_CHOPS ((FIT_CHOP_EXERCISE_NAME)18) -#define FIT_CHOP_EXERCISE_NAME_STANDING_ROTATIONAL_CHOP ((FIT_CHOP_EXERCISE_NAME)19) -#define FIT_CHOP_EXERCISE_NAME_STANDING_SPLIT_ROTATIONAL_CHOP ((FIT_CHOP_EXERCISE_NAME)20) -#define FIT_CHOP_EXERCISE_NAME_STANDING_SPLIT_ROTATIONAL_REVERSE_CHOP ((FIT_CHOP_EXERCISE_NAME)21) -#define FIT_CHOP_EXERCISE_NAME_STANDING_STABILITY_REVERSE_CHOP ((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_CORE_EXERCISE_NAME)0) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ABS_JABS ((FIT_CORE_EXERCISE_NAME)1) -#define FIT_CORE_EXERCISE_NAME_ALTERNATING_PLATE_REACH ((FIT_CORE_EXERCISE_NAME)2) -#define FIT_CORE_EXERCISE_NAME_BARBELL_ROLLOUT ((FIT_CORE_EXERCISE_NAME)3) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_BARBELL_ROLLOUT ((FIT_CORE_EXERCISE_NAME)4) -#define FIT_CORE_EXERCISE_NAME_BODY_BAR_OBLIQUE_TWIST ((FIT_CORE_EXERCISE_NAME)5) -#define FIT_CORE_EXERCISE_NAME_CABLE_CORE_PRESS ((FIT_CORE_EXERCISE_NAME)6) -#define FIT_CORE_EXERCISE_NAME_CABLE_SIDE_BEND ((FIT_CORE_EXERCISE_NAME)7) -#define FIT_CORE_EXERCISE_NAME_SIDE_BEND ((FIT_CORE_EXERCISE_NAME)8) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SIDE_BEND ((FIT_CORE_EXERCISE_NAME)9) -#define FIT_CORE_EXERCISE_NAME_CRESCENT_CIRCLE ((FIT_CORE_EXERCISE_NAME)10) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_CRESCENT_CIRCLE ((FIT_CORE_EXERCISE_NAME)11) -#define FIT_CORE_EXERCISE_NAME_CYCLING_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)12) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_CYCLING_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)13) -#define FIT_CORE_EXERCISE_NAME_ELEVATED_FEET_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)14) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)15) -#define FIT_CORE_EXERCISE_NAME_HALF_TURKISH_GET_UP ((FIT_CORE_EXERCISE_NAME)16) -#define FIT_CORE_EXERCISE_NAME_KETTLEBELL_WINDMILL ((FIT_CORE_EXERCISE_NAME)17) -#define FIT_CORE_EXERCISE_NAME_KNEELING_AB_WHEEL ((FIT_CORE_EXERCISE_NAME)18) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_KNEELING_AB_WHEEL ((FIT_CORE_EXERCISE_NAME)19) -#define FIT_CORE_EXERCISE_NAME_MODIFIED_FRONT_LEVER ((FIT_CORE_EXERCISE_NAME)20) -#define FIT_CORE_EXERCISE_NAME_OPEN_KNEE_TUCKS ((FIT_CORE_EXERCISE_NAME)21) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_OPEN_KNEE_TUCKS ((FIT_CORE_EXERCISE_NAME)22) -#define FIT_CORE_EXERCISE_NAME_SIDE_ABS_LEG_LIFT ((FIT_CORE_EXERCISE_NAME)23) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SIDE_ABS_LEG_LIFT ((FIT_CORE_EXERCISE_NAME)24) -#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_JACKKNIFE ((FIT_CORE_EXERCISE_NAME)25) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_JACKKNIFE ((FIT_CORE_EXERCISE_NAME)26) -#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_PIKE ((FIT_CORE_EXERCISE_NAME)27) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PIKE ((FIT_CORE_EXERCISE_NAME)28) -#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_ROLLOUT ((FIT_CORE_EXERCISE_NAME)29) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_ROLLOUT ((FIT_CORE_EXERCISE_NAME)30) -#define FIT_CORE_EXERCISE_NAME_TRIANGLE_HIP_PRESS ((FIT_CORE_EXERCISE_NAME)31) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_TRIANGLE_HIP_PRESS ((FIT_CORE_EXERCISE_NAME)32) -#define FIT_CORE_EXERCISE_NAME_TRX_SUSPENDED_JACKKNIFE ((FIT_CORE_EXERCISE_NAME)33) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_TRX_SUSPENDED_JACKKNIFE ((FIT_CORE_EXERCISE_NAME)34) -#define FIT_CORE_EXERCISE_NAME_U_BOAT ((FIT_CORE_EXERCISE_NAME)35) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_U_BOAT ((FIT_CORE_EXERCISE_NAME)36) -#define FIT_CORE_EXERCISE_NAME_WINDMILL_SWITCHES ((FIT_CORE_EXERCISE_NAME)37) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_WINDMILL_SWITCHES ((FIT_CORE_EXERCISE_NAME)38) -#define FIT_CORE_EXERCISE_NAME_ALTERNATING_SLIDE_OUT ((FIT_CORE_EXERCISE_NAME)39) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ALTERNATING_SLIDE_OUT ((FIT_CORE_EXERCISE_NAME)40) -#define FIT_CORE_EXERCISE_NAME_GHD_BACK_EXTENSIONS ((FIT_CORE_EXERCISE_NAME)41) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_GHD_BACK_EXTENSIONS ((FIT_CORE_EXERCISE_NAME)42) -#define FIT_CORE_EXERCISE_NAME_OVERHEAD_WALK ((FIT_CORE_EXERCISE_NAME)43) -#define FIT_CORE_EXERCISE_NAME_INCHWORM ((FIT_CORE_EXERCISE_NAME)44) -#define FIT_CORE_EXERCISE_NAME_WEIGHTED_MODIFIED_FRONT_LEVER ((FIT_CORE_EXERCISE_NAME)45) -#define FIT_CORE_EXERCISE_NAME_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)46) + +typedef FIT_UINT8 FIT_ANTPLUS_DEVICE_TYPE; +#define FIT_ANTPLUS_DEVICE_TYPE_INVALID FIT_UINT8_INVALID +#define FIT_ANTPLUS_DEVICE_TYPE_ANTFS ((FIT_ANTPLUS_DEVICE_TYPE)1) +#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_POWER ((FIT_ANTPLUS_DEVICE_TYPE)11) +#define FIT_ANTPLUS_DEVICE_TYPE_ENVIRONMENT_SENSOR_LEGACY ((FIT_ANTPLUS_DEVICE_TYPE)12) +#define FIT_ANTPLUS_DEVICE_TYPE_MULTI_SPORT_SPEED_DISTANCE ((FIT_ANTPLUS_DEVICE_TYPE)15) +#define FIT_ANTPLUS_DEVICE_TYPE_CONTROL ((FIT_ANTPLUS_DEVICE_TYPE)16) +#define FIT_ANTPLUS_DEVICE_TYPE_FITNESS_EQUIPMENT ((FIT_ANTPLUS_DEVICE_TYPE)17) +#define FIT_ANTPLUS_DEVICE_TYPE_BLOOD_PRESSURE ((FIT_ANTPLUS_DEVICE_TYPE)18) +#define FIT_ANTPLUS_DEVICE_TYPE_GEOCACHE_NODE ((FIT_ANTPLUS_DEVICE_TYPE)19) +#define FIT_ANTPLUS_DEVICE_TYPE_LIGHT_ELECTRIC_VEHICLE ((FIT_ANTPLUS_DEVICE_TYPE)20) +#define FIT_ANTPLUS_DEVICE_TYPE_ENV_SENSOR ((FIT_ANTPLUS_DEVICE_TYPE)25) +#define FIT_ANTPLUS_DEVICE_TYPE_RACQUET ((FIT_ANTPLUS_DEVICE_TYPE)26) +#define FIT_ANTPLUS_DEVICE_TYPE_CONTROL_HUB ((FIT_ANTPLUS_DEVICE_TYPE)27) +#define FIT_ANTPLUS_DEVICE_TYPE_MUSCLE_OXYGEN ((FIT_ANTPLUS_DEVICE_TYPE)31) +#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_LIGHT_MAIN ((FIT_ANTPLUS_DEVICE_TYPE)35) +#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_LIGHT_SHARED ((FIT_ANTPLUS_DEVICE_TYPE)36) +#define FIT_ANTPLUS_DEVICE_TYPE_EXD ((FIT_ANTPLUS_DEVICE_TYPE)38) +#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_RADAR ((FIT_ANTPLUS_DEVICE_TYPE)40) +#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_AERO ((FIT_ANTPLUS_DEVICE_TYPE)46) +#define FIT_ANTPLUS_DEVICE_TYPE_WEIGHT_SCALE ((FIT_ANTPLUS_DEVICE_TYPE)119) +#define FIT_ANTPLUS_DEVICE_TYPE_HEART_RATE ((FIT_ANTPLUS_DEVICE_TYPE)120) +#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_SPEED_CADENCE ((FIT_ANTPLUS_DEVICE_TYPE)121) +#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_CADENCE ((FIT_ANTPLUS_DEVICE_TYPE)122) +#define FIT_ANTPLUS_DEVICE_TYPE_BIKE_SPEED ((FIT_ANTPLUS_DEVICE_TYPE)123) +#define FIT_ANTPLUS_DEVICE_TYPE_STRIDE_SPEED_DISTANCE ((FIT_ANTPLUS_DEVICE_TYPE)124) +#define FIT_ANTPLUS_DEVICE_TYPE_COUNT 24 + +typedef FIT_ENUM FIT_ANT_NETWORK; +#define FIT_ANT_NETWORK_INVALID FIT_ENUM_INVALID +#define FIT_ANT_NETWORK_PUBLIC ((FIT_ANT_NETWORK)0) +#define FIT_ANT_NETWORK_ANTPLUS ((FIT_ANT_NETWORK)1) +#define FIT_ANT_NETWORK_ANTFS ((FIT_ANT_NETWORK)2) +#define FIT_ANT_NETWORK_PRIVATE ((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_WORKOUT_CAPABILITIES)0x00000001) +#define FIT_WORKOUT_CAPABILITIES_CUSTOM ((FIT_WORKOUT_CAPABILITIES)0x00000002) +#define FIT_WORKOUT_CAPABILITIES_FITNESS_EQUIPMENT ((FIT_WORKOUT_CAPABILITIES)0x00000004) +#define FIT_WORKOUT_CAPABILITIES_FIRSTBEAT ((FIT_WORKOUT_CAPABILITIES)0x00000008) +#define FIT_WORKOUT_CAPABILITIES_NEW_LEAF ((FIT_WORKOUT_CAPABILITIES)0x00000010) +#define FIT_WORKOUT_CAPABILITIES_TCX ((FIT_WORKOUT_CAPABILITIES)0x00000020) // For backwards compatibility. Watch should add missing id fields then clear flag. +#define FIT_WORKOUT_CAPABILITIES_SPEED ((FIT_WORKOUT_CAPABILITIES)0x00000080) // Speed source required for workout step. +#define FIT_WORKOUT_CAPABILITIES_HEART_RATE ((FIT_WORKOUT_CAPABILITIES)0x00000100) // Heart rate source required for workout step. +#define FIT_WORKOUT_CAPABILITIES_DISTANCE ((FIT_WORKOUT_CAPABILITIES)0x00000200) // Distance source required for workout step. +#define FIT_WORKOUT_CAPABILITIES_CADENCE ((FIT_WORKOUT_CAPABILITIES)0x00000400) // Cadence source required for workout step. +#define FIT_WORKOUT_CAPABILITIES_POWER ((FIT_WORKOUT_CAPABILITIES)0x00000800) // Power source required for workout step. +#define FIT_WORKOUT_CAPABILITIES_GRADE ((FIT_WORKOUT_CAPABILITIES)0x00001000) // Grade source required for workout step. +#define FIT_WORKOUT_CAPABILITIES_RESISTANCE ((FIT_WORKOUT_CAPABILITIES)0x00002000) // Resistance source required for workout step. +#define FIT_WORKOUT_CAPABILITIES_PROTECTED ((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_BATTERY_STATUS)1) +#define FIT_BATTERY_STATUS_GOOD ((FIT_BATTERY_STATUS)2) +#define FIT_BATTERY_STATUS_OK ((FIT_BATTERY_STATUS)3) +#define FIT_BATTERY_STATUS_LOW ((FIT_BATTERY_STATUS)4) +#define FIT_BATTERY_STATUS_CRITICAL ((FIT_BATTERY_STATUS)5) +#define FIT_BATTERY_STATUS_CHARGING ((FIT_BATTERY_STATUS)6) +#define FIT_BATTERY_STATUS_UNKNOWN ((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_HR_TYPE)0) +#define FIT_HR_TYPE_IRREGULAR ((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_COURSE_CAPABILITIES)0x00000001) +#define FIT_COURSE_CAPABILITIES_VALID ((FIT_COURSE_CAPABILITIES)0x00000002) +#define FIT_COURSE_CAPABILITIES_TIME ((FIT_COURSE_CAPABILITIES)0x00000004) +#define FIT_COURSE_CAPABILITIES_DISTANCE ((FIT_COURSE_CAPABILITIES)0x00000008) +#define FIT_COURSE_CAPABILITIES_POSITION ((FIT_COURSE_CAPABILITIES)0x00000010) +#define FIT_COURSE_CAPABILITIES_HEART_RATE ((FIT_COURSE_CAPABILITIES)0x00000020) +#define FIT_COURSE_CAPABILITIES_POWER ((FIT_COURSE_CAPABILITIES)0x00000040) +#define FIT_COURSE_CAPABILITIES_CADENCE ((FIT_COURSE_CAPABILITIES)0x00000080) +#define FIT_COURSE_CAPABILITIES_TRAINING ((FIT_COURSE_CAPABILITIES)0x00000100) +#define FIT_COURSE_CAPABILITIES_NAVIGATION ((FIT_COURSE_CAPABILITIES)0x00000200) +#define FIT_COURSE_CAPABILITIES_BIKEWAY ((FIT_COURSE_CAPABILITIES)0x00000400) +#define FIT_COURSE_CAPABILITIES_COUNT 11 + +typedef FIT_UINT16 FIT_WEIGHT; +#define FIT_WEIGHT_INVALID FIT_UINT16_INVALID +#define FIT_WEIGHT_CALCULATING ((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_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_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_BP_STATUS)0) +#define FIT_BP_STATUS_ERROR_INCOMPLETE_DATA ((FIT_BP_STATUS)1) +#define FIT_BP_STATUS_ERROR_NO_MEASUREMENT ((FIT_BP_STATUS)2) +#define FIT_BP_STATUS_ERROR_DATA_OUT_OF_RANGE ((FIT_BP_STATUS)3) +#define FIT_BP_STATUS_ERROR_IRREGULAR_HEART_RATE ((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_USER_LOCAL_ID)0x0000) +#define FIT_USER_LOCAL_ID_LOCAL_MAX ((FIT_USER_LOCAL_ID)0x000F) +#define FIT_USER_LOCAL_ID_STATIONARY_MIN ((FIT_USER_LOCAL_ID)0x0010) +#define FIT_USER_LOCAL_ID_STATIONARY_MAX ((FIT_USER_LOCAL_ID)0x00FF) +#define FIT_USER_LOCAL_ID_PORTABLE_MIN ((FIT_USER_LOCAL_ID)0x0100) +#define FIT_USER_LOCAL_ID_PORTABLE_MAX ((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_SWIM_STROKE)0) +#define FIT_SWIM_STROKE_BACKSTROKE ((FIT_SWIM_STROKE)1) +#define FIT_SWIM_STROKE_BREASTSTROKE ((FIT_SWIM_STROKE)2) +#define FIT_SWIM_STROKE_BUTTERFLY ((FIT_SWIM_STROKE)3) +#define FIT_SWIM_STROKE_DRILL ((FIT_SWIM_STROKE)4) +#define FIT_SWIM_STROKE_MIXED ((FIT_SWIM_STROKE)5) +#define FIT_SWIM_STROKE_IM ((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_COUNT 7 + +typedef FIT_ENUM FIT_ACTIVITY_TYPE; +#define FIT_ACTIVITY_TYPE_INVALID FIT_ENUM_INVALID +#define FIT_ACTIVITY_TYPE_GENERIC ((FIT_ACTIVITY_TYPE)0) +#define FIT_ACTIVITY_TYPE_RUNNING ((FIT_ACTIVITY_TYPE)1) +#define FIT_ACTIVITY_TYPE_CYCLING ((FIT_ACTIVITY_TYPE)2) +#define FIT_ACTIVITY_TYPE_TRANSITION ((FIT_ACTIVITY_TYPE)3) // Mulitsport transition +#define FIT_ACTIVITY_TYPE_FITNESS_EQUIPMENT ((FIT_ACTIVITY_TYPE)4) +#define FIT_ACTIVITY_TYPE_SWIMMING ((FIT_ACTIVITY_TYPE)5) +#define FIT_ACTIVITY_TYPE_WALKING ((FIT_ACTIVITY_TYPE)6) +#define FIT_ACTIVITY_TYPE_SEDENTARY ((FIT_ACTIVITY_TYPE)8) +#define FIT_ACTIVITY_TYPE_ALL ((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_ACTIVITY_SUBTYPE)0) +#define FIT_ACTIVITY_SUBTYPE_TREADMILL ((FIT_ACTIVITY_SUBTYPE)1) // Run +#define FIT_ACTIVITY_SUBTYPE_STREET ((FIT_ACTIVITY_SUBTYPE)2) // Run +#define FIT_ACTIVITY_SUBTYPE_TRAIL ((FIT_ACTIVITY_SUBTYPE)3) // Run +#define FIT_ACTIVITY_SUBTYPE_TRACK ((FIT_ACTIVITY_SUBTYPE)4) // Run +#define FIT_ACTIVITY_SUBTYPE_SPIN ((FIT_ACTIVITY_SUBTYPE)5) // Cycling +#define FIT_ACTIVITY_SUBTYPE_INDOOR_CYCLING ((FIT_ACTIVITY_SUBTYPE)6) // Cycling +#define FIT_ACTIVITY_SUBTYPE_ROAD ((FIT_ACTIVITY_SUBTYPE)7) // Cycling +#define FIT_ACTIVITY_SUBTYPE_MOUNTAIN ((FIT_ACTIVITY_SUBTYPE)8) // Cycling +#define FIT_ACTIVITY_SUBTYPE_DOWNHILL ((FIT_ACTIVITY_SUBTYPE)9) // Cycling +#define FIT_ACTIVITY_SUBTYPE_RECUMBENT ((FIT_ACTIVITY_SUBTYPE)10) // Cycling +#define FIT_ACTIVITY_SUBTYPE_CYCLOCROSS ((FIT_ACTIVITY_SUBTYPE)11) // Cycling +#define FIT_ACTIVITY_SUBTYPE_HAND_CYCLING ((FIT_ACTIVITY_SUBTYPE)12) // Cycling +#define FIT_ACTIVITY_SUBTYPE_TRACK_CYCLING ((FIT_ACTIVITY_SUBTYPE)13) // Cycling +#define FIT_ACTIVITY_SUBTYPE_INDOOR_ROWING ((FIT_ACTIVITY_SUBTYPE)14) // Fitness Equipment +#define FIT_ACTIVITY_SUBTYPE_ELLIPTICAL ((FIT_ACTIVITY_SUBTYPE)15) // Fitness Equipment +#define FIT_ACTIVITY_SUBTYPE_STAIR_CLIMBING ((FIT_ACTIVITY_SUBTYPE)16) // Fitness Equipment +#define FIT_ACTIVITY_SUBTYPE_LAP_SWIMMING ((FIT_ACTIVITY_SUBTYPE)17) // Swimming +#define FIT_ACTIVITY_SUBTYPE_OPEN_WATER ((FIT_ACTIVITY_SUBTYPE)18) // Swimming +#define FIT_ACTIVITY_SUBTYPE_ALL ((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_ACTIVITY_LEVEL)0) +#define FIT_ACTIVITY_LEVEL_MEDIUM ((FIT_ACTIVITY_LEVEL)1) +#define FIT_ACTIVITY_LEVEL_HIGH ((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_SIDE)0) +#define FIT_SIDE_LEFT ((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_LEFT_RIGHT_BALANCE)0x7F) // % contribution +#define FIT_LEFT_RIGHT_BALANCE_RIGHT ((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_LEFT_RIGHT_BALANCE_100)0x3FFF) // % contribution scaled by 100 +#define FIT_LEFT_RIGHT_BALANCE_100_RIGHT ((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_LENGTH_TYPE)0) // Rest period. Length with no strokes +#define FIT_LENGTH_TYPE_ACTIVE ((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_DAY_OF_WEEK)0) +#define FIT_DAY_OF_WEEK_MONDAY ((FIT_DAY_OF_WEEK)1) +#define FIT_DAY_OF_WEEK_TUESDAY ((FIT_DAY_OF_WEEK)2) +#define FIT_DAY_OF_WEEK_WEDNESDAY ((FIT_DAY_OF_WEEK)3) +#define FIT_DAY_OF_WEEK_THURSDAY ((FIT_DAY_OF_WEEK)4) +#define FIT_DAY_OF_WEEK_FRIDAY ((FIT_DAY_OF_WEEK)5) +#define FIT_DAY_OF_WEEK_SATURDAY ((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_CONNECTIVITY_CAPABILITIES)0x00000001) +#define FIT_CONNECTIVITY_CAPABILITIES_BLUETOOTH_LE ((FIT_CONNECTIVITY_CAPABILITIES)0x00000002) +#define FIT_CONNECTIVITY_CAPABILITIES_ANT ((FIT_CONNECTIVITY_CAPABILITIES)0x00000004) +#define FIT_CONNECTIVITY_CAPABILITIES_ACTIVITY_UPLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00000008) +#define FIT_CONNECTIVITY_CAPABILITIES_COURSE_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00000010) +#define FIT_CONNECTIVITY_CAPABILITIES_WORKOUT_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00000020) +#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK ((FIT_CONNECTIVITY_CAPABILITIES)0x00000040) +#define FIT_CONNECTIVITY_CAPABILITIES_WEATHER_CONDITIONS ((FIT_CONNECTIVITY_CAPABILITIES)0x00000080) +#define FIT_CONNECTIVITY_CAPABILITIES_WEATHER_ALERTS ((FIT_CONNECTIVITY_CAPABILITIES)0x00000100) +#define FIT_CONNECTIVITY_CAPABILITIES_GPS_EPHEMERIS_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00000200) +#define FIT_CONNECTIVITY_CAPABILITIES_EXPLICIT_ARCHIVE ((FIT_CONNECTIVITY_CAPABILITIES)0x00000400) +#define FIT_CONNECTIVITY_CAPABILITIES_SETUP_INCOMPLETE ((FIT_CONNECTIVITY_CAPABILITIES)0x00000800) +#define FIT_CONNECTIVITY_CAPABILITIES_CONTINUE_SYNC_AFTER_SOFTWARE_UPDATE ((FIT_CONNECTIVITY_CAPABILITIES)0x00001000) +#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_APP_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00002000) +#define FIT_CONNECTIVITY_CAPABILITIES_GOLF_COURSE_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00004000) +#define FIT_CONNECTIVITY_CAPABILITIES_DEVICE_INITIATES_SYNC ((FIT_CONNECTIVITY_CAPABILITIES)0x00008000) // Indicates device is in control of initiating all syncs +#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WATCH_APP_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00010000) +#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WIDGET_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00020000) +#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_WATCH_FACE_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00040000) +#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_DATA_FIELD_DOWNLOAD ((FIT_CONNECTIVITY_CAPABILITIES)0x00080000) +#define FIT_CONNECTIVITY_CAPABILITIES_CONNECT_IQ_APP_MANAGMENT ((FIT_CONNECTIVITY_CAPABILITIES)0x00100000) // Device supports delete and reorder of apps via GCM +#define FIT_CONNECTIVITY_CAPABILITIES_SWING_SENSOR ((FIT_CONNECTIVITY_CAPABILITIES)0x00200000) +#define FIT_CONNECTIVITY_CAPABILITIES_SWING_SENSOR_REMOTE ((FIT_CONNECTIVITY_CAPABILITIES)0x00400000) +#define FIT_CONNECTIVITY_CAPABILITIES_INCIDENT_DETECTION ((FIT_CONNECTIVITY_CAPABILITIES)0x00800000) // Device supports incident detection +#define FIT_CONNECTIVITY_CAPABILITIES_AUDIO_PROMPTS ((FIT_CONNECTIVITY_CAPABILITIES)0x01000000) +#define FIT_CONNECTIVITY_CAPABILITIES_WIFI_VERIFICATION ((FIT_CONNECTIVITY_CAPABILITIES)0x02000000) // Device supports reporting wifi verification via GCM +#define FIT_CONNECTIVITY_CAPABILITIES_TRUE_UP ((FIT_CONNECTIVITY_CAPABILITIES)0x04000000) // Device supports True Up +#define FIT_CONNECTIVITY_CAPABILITIES_FIND_MY_WATCH ((FIT_CONNECTIVITY_CAPABILITIES)0x08000000) // Device supports Find My Watch +#define FIT_CONNECTIVITY_CAPABILITIES_REMOTE_MANUAL_SYNC ((FIT_CONNECTIVITY_CAPABILITIES)0x10000000) +#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK_AUTO_START ((FIT_CONNECTIVITY_CAPABILITIES)0x20000000) // Device supports LiveTrack auto start +#define FIT_CONNECTIVITY_CAPABILITIES_LIVE_TRACK_MESSAGING ((FIT_CONNECTIVITY_CAPABILITIES)0x40000000) // Device supports LiveTrack Messaging +#define FIT_CONNECTIVITY_CAPABILITIES_INSTANT_INPUT ((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_WEATHER_REPORT)0) +#define FIT_WEATHER_REPORT_FORECAST ((FIT_WEATHER_REPORT)1) // Deprecated use hourly_forecast instead +#define FIT_WEATHER_REPORT_HOURLY_FORECAST ((FIT_WEATHER_REPORT)1) +#define FIT_WEATHER_REPORT_DAILY_FORECAST ((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_WEATHER_STATUS)0) +#define FIT_WEATHER_STATUS_PARTLY_CLOUDY ((FIT_WEATHER_STATUS)1) +#define FIT_WEATHER_STATUS_MOSTLY_CLOUDY ((FIT_WEATHER_STATUS)2) +#define FIT_WEATHER_STATUS_RAIN ((FIT_WEATHER_STATUS)3) +#define FIT_WEATHER_STATUS_SNOW ((FIT_WEATHER_STATUS)4) +#define FIT_WEATHER_STATUS_WINDY ((FIT_WEATHER_STATUS)5) +#define FIT_WEATHER_STATUS_THUNDERSTORMS ((FIT_WEATHER_STATUS)6) +#define FIT_WEATHER_STATUS_WINTRY_MIX ((FIT_WEATHER_STATUS)7) +#define FIT_WEATHER_STATUS_FOG ((FIT_WEATHER_STATUS)8) +#define FIT_WEATHER_STATUS_HAZY ((FIT_WEATHER_STATUS)11) +#define FIT_WEATHER_STATUS_HAIL ((FIT_WEATHER_STATUS)12) +#define FIT_WEATHER_STATUS_SCATTERED_SHOWERS ((FIT_WEATHER_STATUS)13) +#define FIT_WEATHER_STATUS_SCATTERED_THUNDERSTORMS ((FIT_WEATHER_STATUS)14) +#define FIT_WEATHER_STATUS_UNKNOWN_PRECIPITATION ((FIT_WEATHER_STATUS)15) +#define FIT_WEATHER_STATUS_LIGHT_RAIN ((FIT_WEATHER_STATUS)16) +#define FIT_WEATHER_STATUS_HEAVY_RAIN ((FIT_WEATHER_STATUS)17) +#define FIT_WEATHER_STATUS_LIGHT_SNOW ((FIT_WEATHER_STATUS)18) +#define FIT_WEATHER_STATUS_HEAVY_SNOW ((FIT_WEATHER_STATUS)19) +#define FIT_WEATHER_STATUS_LIGHT_RAIN_SNOW ((FIT_WEATHER_STATUS)20) +#define FIT_WEATHER_STATUS_HEAVY_RAIN_SNOW ((FIT_WEATHER_STATUS)21) +#define FIT_WEATHER_STATUS_CLOUDY ((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_WEATHER_SEVERITY)0) +#define FIT_WEATHER_SEVERITY_WARNING ((FIT_WEATHER_SEVERITY)1) +#define FIT_WEATHER_SEVERITY_WATCH ((FIT_WEATHER_SEVERITY)2) +#define FIT_WEATHER_SEVERITY_ADVISORY ((FIT_WEATHER_SEVERITY)3) +#define FIT_WEATHER_SEVERITY_STATEMENT ((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_WEATHER_SEVERE_TYPE)0) +#define FIT_WEATHER_SEVERE_TYPE_TORNADO ((FIT_WEATHER_SEVERE_TYPE)1) +#define FIT_WEATHER_SEVERE_TYPE_TSUNAMI ((FIT_WEATHER_SEVERE_TYPE)2) +#define FIT_WEATHER_SEVERE_TYPE_HURRICANE ((FIT_WEATHER_SEVERE_TYPE)3) +#define FIT_WEATHER_SEVERE_TYPE_EXTREME_WIND ((FIT_WEATHER_SEVERE_TYPE)4) +#define FIT_WEATHER_SEVERE_TYPE_TYPHOON ((FIT_WEATHER_SEVERE_TYPE)5) +#define FIT_WEATHER_SEVERE_TYPE_INLAND_HURRICANE ((FIT_WEATHER_SEVERE_TYPE)6) +#define FIT_WEATHER_SEVERE_TYPE_HURRICANE_FORCE_WIND ((FIT_WEATHER_SEVERE_TYPE)7) +#define FIT_WEATHER_SEVERE_TYPE_WATERSPOUT ((FIT_WEATHER_SEVERE_TYPE)8) +#define FIT_WEATHER_SEVERE_TYPE_SEVERE_THUNDERSTORM ((FIT_WEATHER_SEVERE_TYPE)9) +#define FIT_WEATHER_SEVERE_TYPE_WRECKHOUSE_WINDS ((FIT_WEATHER_SEVERE_TYPE)10) +#define FIT_WEATHER_SEVERE_TYPE_LES_SUETES_WIND ((FIT_WEATHER_SEVERE_TYPE)11) +#define FIT_WEATHER_SEVERE_TYPE_AVALANCHE ((FIT_WEATHER_SEVERE_TYPE)12) +#define FIT_WEATHER_SEVERE_TYPE_FLASH_FLOOD ((FIT_WEATHER_SEVERE_TYPE)13) +#define FIT_WEATHER_SEVERE_TYPE_TROPICAL_STORM ((FIT_WEATHER_SEVERE_TYPE)14) +#define FIT_WEATHER_SEVERE_TYPE_INLAND_TROPICAL_STORM ((FIT_WEATHER_SEVERE_TYPE)15) +#define FIT_WEATHER_SEVERE_TYPE_BLIZZARD ((FIT_WEATHER_SEVERE_TYPE)16) +#define FIT_WEATHER_SEVERE_TYPE_ICE_STORM ((FIT_WEATHER_SEVERE_TYPE)17) +#define FIT_WEATHER_SEVERE_TYPE_FREEZING_RAIN ((FIT_WEATHER_SEVERE_TYPE)18) +#define FIT_WEATHER_SEVERE_TYPE_DEBRIS_FLOW ((FIT_WEATHER_SEVERE_TYPE)19) +#define FIT_WEATHER_SEVERE_TYPE_FLASH_FREEZE ((FIT_WEATHER_SEVERE_TYPE)20) +#define FIT_WEATHER_SEVERE_TYPE_DUST_STORM ((FIT_WEATHER_SEVERE_TYPE)21) +#define FIT_WEATHER_SEVERE_TYPE_HIGH_WIND ((FIT_WEATHER_SEVERE_TYPE)22) +#define FIT_WEATHER_SEVERE_TYPE_WINTER_STORM ((FIT_WEATHER_SEVERE_TYPE)23) +#define FIT_WEATHER_SEVERE_TYPE_HEAVY_FREEZING_SPRAY ((FIT_WEATHER_SEVERE_TYPE)24) +#define FIT_WEATHER_SEVERE_TYPE_EXTREME_COLD ((FIT_WEATHER_SEVERE_TYPE)25) +#define FIT_WEATHER_SEVERE_TYPE_WIND_CHILL ((FIT_WEATHER_SEVERE_TYPE)26) +#define FIT_WEATHER_SEVERE_TYPE_COLD_WAVE ((FIT_WEATHER_SEVERE_TYPE)27) +#define FIT_WEATHER_SEVERE_TYPE_HEAVY_SNOW_ALERT ((FIT_WEATHER_SEVERE_TYPE)28) +#define FIT_WEATHER_SEVERE_TYPE_LAKE_EFFECT_BLOWING_SNOW ((FIT_WEATHER_SEVERE_TYPE)29) +#define FIT_WEATHER_SEVERE_TYPE_SNOW_SQUALL ((FIT_WEATHER_SEVERE_TYPE)30) +#define FIT_WEATHER_SEVERE_TYPE_LAKE_EFFECT_SNOW ((FIT_WEATHER_SEVERE_TYPE)31) +#define FIT_WEATHER_SEVERE_TYPE_WINTER_WEATHER ((FIT_WEATHER_SEVERE_TYPE)32) +#define FIT_WEATHER_SEVERE_TYPE_SLEET ((FIT_WEATHER_SEVERE_TYPE)33) +#define FIT_WEATHER_SEVERE_TYPE_SNOWFALL ((FIT_WEATHER_SEVERE_TYPE)34) +#define FIT_WEATHER_SEVERE_TYPE_SNOW_AND_BLOWING_SNOW ((FIT_WEATHER_SEVERE_TYPE)35) +#define FIT_WEATHER_SEVERE_TYPE_BLOWING_SNOW ((FIT_WEATHER_SEVERE_TYPE)36) +#define FIT_WEATHER_SEVERE_TYPE_SNOW_ALERT ((FIT_WEATHER_SEVERE_TYPE)37) +#define FIT_WEATHER_SEVERE_TYPE_ARCTIC_OUTFLOW ((FIT_WEATHER_SEVERE_TYPE)38) +#define FIT_WEATHER_SEVERE_TYPE_FREEZING_DRIZZLE ((FIT_WEATHER_SEVERE_TYPE)39) +#define FIT_WEATHER_SEVERE_TYPE_STORM ((FIT_WEATHER_SEVERE_TYPE)40) +#define FIT_WEATHER_SEVERE_TYPE_STORM_SURGE ((FIT_WEATHER_SEVERE_TYPE)41) +#define FIT_WEATHER_SEVERE_TYPE_RAINFALL ((FIT_WEATHER_SEVERE_TYPE)42) +#define FIT_WEATHER_SEVERE_TYPE_AREAL_FLOOD ((FIT_WEATHER_SEVERE_TYPE)43) +#define FIT_WEATHER_SEVERE_TYPE_COASTAL_FLOOD ((FIT_WEATHER_SEVERE_TYPE)44) +#define FIT_WEATHER_SEVERE_TYPE_LAKESHORE_FLOOD ((FIT_WEATHER_SEVERE_TYPE)45) +#define FIT_WEATHER_SEVERE_TYPE_EXCESSIVE_HEAT ((FIT_WEATHER_SEVERE_TYPE)46) +#define FIT_WEATHER_SEVERE_TYPE_HEAT ((FIT_WEATHER_SEVERE_TYPE)47) +#define FIT_WEATHER_SEVERE_TYPE_WEATHER ((FIT_WEATHER_SEVERE_TYPE)48) +#define FIT_WEATHER_SEVERE_TYPE_HIGH_HEAT_AND_HUMIDITY ((FIT_WEATHER_SEVERE_TYPE)49) +#define FIT_WEATHER_SEVERE_TYPE_HUMIDEX_AND_HEALTH ((FIT_WEATHER_SEVERE_TYPE)50) +#define FIT_WEATHER_SEVERE_TYPE_HUMIDEX ((FIT_WEATHER_SEVERE_TYPE)51) +#define FIT_WEATHER_SEVERE_TYPE_GALE ((FIT_WEATHER_SEVERE_TYPE)52) +#define FIT_WEATHER_SEVERE_TYPE_FREEZING_SPRAY ((FIT_WEATHER_SEVERE_TYPE)53) +#define FIT_WEATHER_SEVERE_TYPE_SPECIAL_MARINE ((FIT_WEATHER_SEVERE_TYPE)54) +#define FIT_WEATHER_SEVERE_TYPE_SQUALL ((FIT_WEATHER_SEVERE_TYPE)55) +#define FIT_WEATHER_SEVERE_TYPE_STRONG_WIND ((FIT_WEATHER_SEVERE_TYPE)56) +#define FIT_WEATHER_SEVERE_TYPE_LAKE_WIND ((FIT_WEATHER_SEVERE_TYPE)57) +#define FIT_WEATHER_SEVERE_TYPE_MARINE_WEATHER ((FIT_WEATHER_SEVERE_TYPE)58) +#define FIT_WEATHER_SEVERE_TYPE_WIND ((FIT_WEATHER_SEVERE_TYPE)59) +#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_HAZARDOUS_SEAS ((FIT_WEATHER_SEVERE_TYPE)60) +#define FIT_WEATHER_SEVERE_TYPE_HAZARDOUS_SEAS ((FIT_WEATHER_SEVERE_TYPE)61) +#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT ((FIT_WEATHER_SEVERE_TYPE)62) +#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_WINDS ((FIT_WEATHER_SEVERE_TYPE)63) +#define FIT_WEATHER_SEVERE_TYPE_SMALL_CRAFT_ROUGH_BAR ((FIT_WEATHER_SEVERE_TYPE)64) +#define FIT_WEATHER_SEVERE_TYPE_HIGH_WATER_LEVEL ((FIT_WEATHER_SEVERE_TYPE)65) +#define FIT_WEATHER_SEVERE_TYPE_ASHFALL ((FIT_WEATHER_SEVERE_TYPE)66) +#define FIT_WEATHER_SEVERE_TYPE_FREEZING_FOG ((FIT_WEATHER_SEVERE_TYPE)67) +#define FIT_WEATHER_SEVERE_TYPE_DENSE_FOG ((FIT_WEATHER_SEVERE_TYPE)68) +#define FIT_WEATHER_SEVERE_TYPE_DENSE_SMOKE ((FIT_WEATHER_SEVERE_TYPE)69) +#define FIT_WEATHER_SEVERE_TYPE_BLOWING_DUST ((FIT_WEATHER_SEVERE_TYPE)70) +#define FIT_WEATHER_SEVERE_TYPE_HARD_FREEZE ((FIT_WEATHER_SEVERE_TYPE)71) +#define FIT_WEATHER_SEVERE_TYPE_FREEZE ((FIT_WEATHER_SEVERE_TYPE)72) +#define FIT_WEATHER_SEVERE_TYPE_FROST ((FIT_WEATHER_SEVERE_TYPE)73) +#define FIT_WEATHER_SEVERE_TYPE_FIRE_WEATHER ((FIT_WEATHER_SEVERE_TYPE)74) +#define FIT_WEATHER_SEVERE_TYPE_FLOOD ((FIT_WEATHER_SEVERE_TYPE)75) +#define FIT_WEATHER_SEVERE_TYPE_RIP_TIDE ((FIT_WEATHER_SEVERE_TYPE)76) +#define FIT_WEATHER_SEVERE_TYPE_HIGH_SURF ((FIT_WEATHER_SEVERE_TYPE)77) +#define FIT_WEATHER_SEVERE_TYPE_SMOG ((FIT_WEATHER_SEVERE_TYPE)78) +#define FIT_WEATHER_SEVERE_TYPE_AIR_QUALITY ((FIT_WEATHER_SEVERE_TYPE)79) +#define FIT_WEATHER_SEVERE_TYPE_BRISK_WIND ((FIT_WEATHER_SEVERE_TYPE)80) +#define FIT_WEATHER_SEVERE_TYPE_AIR_STAGNATION ((FIT_WEATHER_SEVERE_TYPE)81) +#define FIT_WEATHER_SEVERE_TYPE_LOW_WATER ((FIT_WEATHER_SEVERE_TYPE)82) +#define FIT_WEATHER_SEVERE_TYPE_HYDROLOGICAL ((FIT_WEATHER_SEVERE_TYPE)83) +#define FIT_WEATHER_SEVERE_TYPE_SPECIAL_WEATHER ((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_STROKE_TYPE)0) +#define FIT_STROKE_TYPE_OTHER ((FIT_STROKE_TYPE)1) // stroke was detected but cannot be identified +#define FIT_STROKE_TYPE_SERVE ((FIT_STROKE_TYPE)2) +#define FIT_STROKE_TYPE_FOREHAND ((FIT_STROKE_TYPE)3) +#define FIT_STROKE_TYPE_BACKHAND ((FIT_STROKE_TYPE)4) +#define FIT_STROKE_TYPE_SMASH ((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_BODY_LOCATION)0) +#define FIT_BODY_LOCATION_LEFT_CALF ((FIT_BODY_LOCATION)1) +#define FIT_BODY_LOCATION_LEFT_SHIN ((FIT_BODY_LOCATION)2) +#define FIT_BODY_LOCATION_LEFT_HAMSTRING ((FIT_BODY_LOCATION)3) +#define FIT_BODY_LOCATION_LEFT_QUAD ((FIT_BODY_LOCATION)4) +#define FIT_BODY_LOCATION_LEFT_GLUTE ((FIT_BODY_LOCATION)5) +#define FIT_BODY_LOCATION_RIGHT_LEG ((FIT_BODY_LOCATION)6) +#define FIT_BODY_LOCATION_RIGHT_CALF ((FIT_BODY_LOCATION)7) +#define FIT_BODY_LOCATION_RIGHT_SHIN ((FIT_BODY_LOCATION)8) +#define FIT_BODY_LOCATION_RIGHT_HAMSTRING ((FIT_BODY_LOCATION)9) +#define FIT_BODY_LOCATION_RIGHT_QUAD ((FIT_BODY_LOCATION)10) +#define FIT_BODY_LOCATION_RIGHT_GLUTE ((FIT_BODY_LOCATION)11) +#define FIT_BODY_LOCATION_TORSO_BACK ((FIT_BODY_LOCATION)12) +#define FIT_BODY_LOCATION_LEFT_LOWER_BACK ((FIT_BODY_LOCATION)13) +#define FIT_BODY_LOCATION_LEFT_UPPER_BACK ((FIT_BODY_LOCATION)14) +#define FIT_BODY_LOCATION_RIGHT_LOWER_BACK ((FIT_BODY_LOCATION)15) +#define FIT_BODY_LOCATION_RIGHT_UPPER_BACK ((FIT_BODY_LOCATION)16) +#define FIT_BODY_LOCATION_TORSO_FRONT ((FIT_BODY_LOCATION)17) +#define FIT_BODY_LOCATION_LEFT_ABDOMEN ((FIT_BODY_LOCATION)18) +#define FIT_BODY_LOCATION_LEFT_CHEST ((FIT_BODY_LOCATION)19) +#define FIT_BODY_LOCATION_RIGHT_ABDOMEN ((FIT_BODY_LOCATION)20) +#define FIT_BODY_LOCATION_RIGHT_CHEST ((FIT_BODY_LOCATION)21) +#define FIT_BODY_LOCATION_LEFT_ARM ((FIT_BODY_LOCATION)22) +#define FIT_BODY_LOCATION_LEFT_SHOULDER ((FIT_BODY_LOCATION)23) +#define FIT_BODY_LOCATION_LEFT_BICEP ((FIT_BODY_LOCATION)24) +#define FIT_BODY_LOCATION_LEFT_TRICEP ((FIT_BODY_LOCATION)25) +#define FIT_BODY_LOCATION_LEFT_BRACHIORADIALIS ((FIT_BODY_LOCATION)26) // Left anterior forearm +#define FIT_BODY_LOCATION_LEFT_FOREARM_EXTENSORS ((FIT_BODY_LOCATION)27) // Left posterior forearm +#define FIT_BODY_LOCATION_RIGHT_ARM ((FIT_BODY_LOCATION)28) +#define FIT_BODY_LOCATION_RIGHT_SHOULDER ((FIT_BODY_LOCATION)29) +#define FIT_BODY_LOCATION_RIGHT_BICEP ((FIT_BODY_LOCATION)30) +#define FIT_BODY_LOCATION_RIGHT_TRICEP ((FIT_BODY_LOCATION)31) +#define FIT_BODY_LOCATION_RIGHT_BRACHIORADIALIS ((FIT_BODY_LOCATION)32) // Right anterior forearm +#define FIT_BODY_LOCATION_RIGHT_FOREARM_EXTENSORS ((FIT_BODY_LOCATION)33) // Right posterior forearm +#define FIT_BODY_LOCATION_NECK ((FIT_BODY_LOCATION)34) +#define FIT_BODY_LOCATION_THROAT ((FIT_BODY_LOCATION)35) +#define FIT_BODY_LOCATION_WAIST_MID_BACK ((FIT_BODY_LOCATION)36) +#define FIT_BODY_LOCATION_WAIST_FRONT ((FIT_BODY_LOCATION)37) +#define FIT_BODY_LOCATION_WAIST_LEFT ((FIT_BODY_LOCATION)38) +#define FIT_BODY_LOCATION_WAIST_RIGHT ((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_SEGMENT_LAP_STATUS)0) +#define FIT_SEGMENT_LAP_STATUS_FAIL ((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_SEGMENT_LEADERBOARD_TYPE)0) +#define FIT_SEGMENT_LEADERBOARD_TYPE_PERSONAL_BEST ((FIT_SEGMENT_LEADERBOARD_TYPE)1) +#define FIT_SEGMENT_LEADERBOARD_TYPE_CONNECTIONS ((FIT_SEGMENT_LEADERBOARD_TYPE)2) +#define FIT_SEGMENT_LEADERBOARD_TYPE_GROUP ((FIT_SEGMENT_LEADERBOARD_TYPE)3) +#define FIT_SEGMENT_LEADERBOARD_TYPE_CHALLENGER ((FIT_SEGMENT_LEADERBOARD_TYPE)4) +#define FIT_SEGMENT_LEADERBOARD_TYPE_KOM ((FIT_SEGMENT_LEADERBOARD_TYPE)5) +#define FIT_SEGMENT_LEADERBOARD_TYPE_QOM ((FIT_SEGMENT_LEADERBOARD_TYPE)6) +#define FIT_SEGMENT_LEADERBOARD_TYPE_PR ((FIT_SEGMENT_LEADERBOARD_TYPE)7) +#define FIT_SEGMENT_LEADERBOARD_TYPE_GOAL ((FIT_SEGMENT_LEADERBOARD_TYPE)8) +#define FIT_SEGMENT_LEADERBOARD_TYPE_RIVAL ((FIT_SEGMENT_LEADERBOARD_TYPE)9) +#define FIT_SEGMENT_LEADERBOARD_TYPE_CLUB_LEADER ((FIT_SEGMENT_LEADERBOARD_TYPE)10) +#define FIT_SEGMENT_LEADERBOARD_TYPE_COUNT 11 + +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_SEGMENT_DELETE_STATUS)0) +#define FIT_SEGMENT_DELETE_STATUS_DELETE_ONE ((FIT_SEGMENT_DELETE_STATUS)1) +#define FIT_SEGMENT_DELETE_STATUS_DELETE_ALL ((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_SEGMENT_SELECTION_TYPE)0) +#define FIT_SEGMENT_SELECTION_TYPE_SUGGESTED ((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_SOURCE_TYPE)0) // External device connected with ANT +#define FIT_SOURCE_TYPE_ANTPLUS ((FIT_SOURCE_TYPE)1) // External device connected with ANT+ +#define FIT_SOURCE_TYPE_BLUETOOTH ((FIT_SOURCE_TYPE)2) // External device connected with BT +#define FIT_SOURCE_TYPE_BLUETOOTH_LOW_ENERGY ((FIT_SOURCE_TYPE)3) // External device connected with BLE +#define FIT_SOURCE_TYPE_WIFI ((FIT_SOURCE_TYPE)4) // External device connected with Wifi +#define FIT_SOURCE_TYPE_LOCAL ((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_COUNT 0 + +typedef FIT_ENUM FIT_DISPLAY_ORIENTATION; +#define FIT_DISPLAY_ORIENTATION_INVALID FIT_ENUM_INVALID +#define FIT_DISPLAY_ORIENTATION_AUTO ((FIT_DISPLAY_ORIENTATION)0) // automatic if the device supports it +#define FIT_DISPLAY_ORIENTATION_PORTRAIT ((FIT_DISPLAY_ORIENTATION)1) +#define FIT_DISPLAY_ORIENTATION_LANDSCAPE ((FIT_DISPLAY_ORIENTATION)2) +#define FIT_DISPLAY_ORIENTATION_PORTRAIT_FLIPPED ((FIT_DISPLAY_ORIENTATION)3) // portrait mode but rotated 180 degrees +#define FIT_DISPLAY_ORIENTATION_LANDSCAPE_FLIPPED ((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_WORKOUT_EQUIPMENT)0) +#define FIT_WORKOUT_EQUIPMENT_SWIM_FINS ((FIT_WORKOUT_EQUIPMENT)1) +#define FIT_WORKOUT_EQUIPMENT_SWIM_KICKBOARD ((FIT_WORKOUT_EQUIPMENT)2) +#define FIT_WORKOUT_EQUIPMENT_SWIM_PADDLES ((FIT_WORKOUT_EQUIPMENT)3) +#define FIT_WORKOUT_EQUIPMENT_SWIM_PULL_BUOY ((FIT_WORKOUT_EQUIPMENT)4) +#define FIT_WORKOUT_EQUIPMENT_SWIM_SNORKEL ((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_WATCHFACE_MODE)0) +#define FIT_WATCHFACE_MODE_ANALOG ((FIT_WATCHFACE_MODE)1) +#define FIT_WATCHFACE_MODE_CONNECT_IQ ((FIT_WATCHFACE_MODE)2) +#define FIT_WATCHFACE_MODE_DISABLED ((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_DIGITAL_WATCHFACE_LAYOUT)0) +#define FIT_DIGITAL_WATCHFACE_LAYOUT_MODERN ((FIT_DIGITAL_WATCHFACE_LAYOUT)1) +#define FIT_DIGITAL_WATCHFACE_LAYOUT_BOLD ((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_ANALOG_WATCHFACE_LAYOUT)0) +#define FIT_ANALOG_WATCHFACE_LAYOUT_TRADITIONAL ((FIT_ANALOG_WATCHFACE_LAYOUT)1) +#define FIT_ANALOG_WATCHFACE_LAYOUT_MODERN ((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_RIDER_POSITION_TYPE)0) +#define FIT_RIDER_POSITION_TYPE_STANDING ((FIT_RIDER_POSITION_TYPE)1) +#define FIT_RIDER_POSITION_TYPE_TRANSITION_TO_SEATED ((FIT_RIDER_POSITION_TYPE)2) +#define FIT_RIDER_POSITION_TYPE_TRANSITION_TO_STANDING ((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_POWER_PHASE_TYPE)0) +#define FIT_POWER_PHASE_TYPE_POWER_PHASE_END_ANGLE ((FIT_POWER_PHASE_TYPE)1) +#define FIT_POWER_PHASE_TYPE_POWER_PHASE_ARC_LENGTH ((FIT_POWER_PHASE_TYPE)2) +#define FIT_POWER_PHASE_TYPE_POWER_PHASE_CENTER ((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_CAMERA_EVENT_TYPE)0) // Start of video recording +#define FIT_CAMERA_EVENT_TYPE_VIDEO_SPLIT ((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_CAMERA_EVENT_TYPE)2) // End of video recording +#define FIT_CAMERA_EVENT_TYPE_PHOTO_TAKEN ((FIT_CAMERA_EVENT_TYPE)3) // Still photo taken +#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_START ((FIT_CAMERA_EVENT_TYPE)4) +#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_SPLIT ((FIT_CAMERA_EVENT_TYPE)5) +#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_END ((FIT_CAMERA_EVENT_TYPE)6) +#define FIT_CAMERA_EVENT_TYPE_VIDEO_SPLIT_START ((FIT_CAMERA_EVENT_TYPE)7) // Mark of video file split start +#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_SPLIT_START ((FIT_CAMERA_EVENT_TYPE)8) +#define FIT_CAMERA_EVENT_TYPE_VIDEO_PAUSE ((FIT_CAMERA_EVENT_TYPE)11) // Mark when a video recording has been paused +#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_PAUSE ((FIT_CAMERA_EVENT_TYPE)12) +#define FIT_CAMERA_EVENT_TYPE_VIDEO_RESUME ((FIT_CAMERA_EVENT_TYPE)13) // Mark when a video recording has been resumed +#define FIT_CAMERA_EVENT_TYPE_VIDEO_SECOND_STREAM_RESUME ((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_SENSOR_TYPE)0) +#define FIT_SENSOR_TYPE_GYROSCOPE ((FIT_SENSOR_TYPE)1) +#define FIT_SENSOR_TYPE_COMPASS ((FIT_SENSOR_TYPE)2) // Magnetometer +#define FIT_SENSOR_TYPE_BAROMETER ((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_BIKE_LIGHT_NETWORK_CONFIG_TYPE)0) +#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_INDIVIDUAL ((FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE)4) +#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_HIGH_VISIBILITY ((FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE)5) +#define FIT_BIKE_LIGHT_NETWORK_CONFIG_TYPE_TRAIL ((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_COMM_TIMEOUT_TYPE)0) // Timeout pairing to any device +#define FIT_COMM_TIMEOUT_TYPE_PAIRING_TIMEOUT ((FIT_COMM_TIMEOUT_TYPE)1) // Timeout pairing to previously paired device +#define FIT_COMM_TIMEOUT_TYPE_CONNECTION_LOST ((FIT_COMM_TIMEOUT_TYPE)2) // Temporary loss of communications +#define FIT_COMM_TIMEOUT_TYPE_CONNECTION_TIMEOUT ((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_CAMERA_ORIENTATION_TYPE)0) +#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_90 ((FIT_CAMERA_ORIENTATION_TYPE)1) +#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_180 ((FIT_CAMERA_ORIENTATION_TYPE)2) +#define FIT_CAMERA_ORIENTATION_TYPE_CAMERA_ORIENTATION_270 ((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_ATTITUDE_STAGE)0) +#define FIT_ATTITUDE_STAGE_ALIGNING ((FIT_ATTITUDE_STAGE)1) +#define FIT_ATTITUDE_STAGE_DEGRADED ((FIT_ATTITUDE_STAGE)2) +#define FIT_ATTITUDE_STAGE_VALID ((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_ATTITUDE_VALIDITY)0x0001) +#define FIT_ATTITUDE_VALIDITY_PITCH_VALID ((FIT_ATTITUDE_VALIDITY)0x0002) +#define FIT_ATTITUDE_VALIDITY_ROLL_VALID ((FIT_ATTITUDE_VALIDITY)0x0004) +#define FIT_ATTITUDE_VALIDITY_LATERAL_BODY_ACCEL_VALID ((FIT_ATTITUDE_VALIDITY)0x0008) +#define FIT_ATTITUDE_VALIDITY_NORMAL_BODY_ACCEL_VALID ((FIT_ATTITUDE_VALIDITY)0x0010) +#define FIT_ATTITUDE_VALIDITY_TURN_RATE_VALID ((FIT_ATTITUDE_VALIDITY)0x0020) +#define FIT_ATTITUDE_VALIDITY_HW_FAIL ((FIT_ATTITUDE_VALIDITY)0x0040) +#define FIT_ATTITUDE_VALIDITY_MAG_INVALID ((FIT_ATTITUDE_VALIDITY)0x0080) +#define FIT_ATTITUDE_VALIDITY_NO_GPS ((FIT_ATTITUDE_VALIDITY)0x0100) +#define FIT_ATTITUDE_VALIDITY_GPS_INVALID ((FIT_ATTITUDE_VALIDITY)0x0200) +#define FIT_ATTITUDE_VALIDITY_SOLUTION_COASTING ((FIT_ATTITUDE_VALIDITY)0x0400) +#define FIT_ATTITUDE_VALIDITY_TRUE_TRACK_ANGLE ((FIT_ATTITUDE_VALIDITY)0x0800) +#define FIT_ATTITUDE_VALIDITY_MAGNETIC_HEADING ((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_AUTO_SYNC_FREQUENCY)0) +#define FIT_AUTO_SYNC_FREQUENCY_OCCASIONALLY ((FIT_AUTO_SYNC_FREQUENCY)1) +#define FIT_AUTO_SYNC_FREQUENCY_FREQUENT ((FIT_AUTO_SYNC_FREQUENCY)2) +#define FIT_AUTO_SYNC_FREQUENCY_ONCE_A_DAY ((FIT_AUTO_SYNC_FREQUENCY)3) +#define FIT_AUTO_SYNC_FREQUENCY_REMOTE ((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_EXD_LAYOUT)0) +#define FIT_EXD_LAYOUT_HALF_VERTICAL ((FIT_EXD_LAYOUT)1) +#define FIT_EXD_LAYOUT_HALF_HORIZONTAL ((FIT_EXD_LAYOUT)2) +#define FIT_EXD_LAYOUT_HALF_VERTICAL_RIGHT_SPLIT ((FIT_EXD_LAYOUT)3) +#define FIT_EXD_LAYOUT_HALF_HORIZONTAL_BOTTOM_SPLIT ((FIT_EXD_LAYOUT)4) +#define FIT_EXD_LAYOUT_FULL_QUARTER_SPLIT ((FIT_EXD_LAYOUT)5) +#define FIT_EXD_LAYOUT_HALF_VERTICAL_LEFT_SPLIT ((FIT_EXD_LAYOUT)6) +#define FIT_EXD_LAYOUT_HALF_HORIZONTAL_TOP_SPLIT ((FIT_EXD_LAYOUT)7) +#define FIT_EXD_LAYOUT_COUNT 8 + +typedef FIT_ENUM FIT_EXD_DISPLAY_TYPE; +#define FIT_EXD_DISPLAY_TYPE_INVALID FIT_ENUM_INVALID +#define FIT_EXD_DISPLAY_TYPE_NUMERICAL ((FIT_EXD_DISPLAY_TYPE)0) +#define FIT_EXD_DISPLAY_TYPE_SIMPLE ((FIT_EXD_DISPLAY_TYPE)1) +#define FIT_EXD_DISPLAY_TYPE_GRAPH ((FIT_EXD_DISPLAY_TYPE)2) +#define FIT_EXD_DISPLAY_TYPE_BAR ((FIT_EXD_DISPLAY_TYPE)3) +#define FIT_EXD_DISPLAY_TYPE_CIRCLE_GRAPH ((FIT_EXD_DISPLAY_TYPE)4) +#define FIT_EXD_DISPLAY_TYPE_VIRTUAL_PARTNER ((FIT_EXD_DISPLAY_TYPE)5) +#define FIT_EXD_DISPLAY_TYPE_BALANCE ((FIT_EXD_DISPLAY_TYPE)6) +#define FIT_EXD_DISPLAY_TYPE_STRING_LIST ((FIT_EXD_DISPLAY_TYPE)7) +#define FIT_EXD_DISPLAY_TYPE_STRING ((FIT_EXD_DISPLAY_TYPE)8) +#define FIT_EXD_DISPLAY_TYPE_SIMPLE_DYNAMIC_ICON ((FIT_EXD_DISPLAY_TYPE)9) +#define FIT_EXD_DISPLAY_TYPE_GAUGE ((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_EXD_DATA_UNITS)0) +#define FIT_EXD_DATA_UNITS_LAPS ((FIT_EXD_DATA_UNITS)1) +#define FIT_EXD_DATA_UNITS_MILES_PER_HOUR ((FIT_EXD_DATA_UNITS)2) +#define FIT_EXD_DATA_UNITS_KILOMETERS_PER_HOUR ((FIT_EXD_DATA_UNITS)3) +#define FIT_EXD_DATA_UNITS_FEET_PER_HOUR ((FIT_EXD_DATA_UNITS)4) +#define FIT_EXD_DATA_UNITS_METERS_PER_HOUR ((FIT_EXD_DATA_UNITS)5) +#define FIT_EXD_DATA_UNITS_DEGREES_CELSIUS ((FIT_EXD_DATA_UNITS)6) +#define FIT_EXD_DATA_UNITS_DEGREES_FARENHEIT ((FIT_EXD_DATA_UNITS)7) +#define FIT_EXD_DATA_UNITS_ZONE ((FIT_EXD_DATA_UNITS)8) +#define FIT_EXD_DATA_UNITS_GEAR ((FIT_EXD_DATA_UNITS)9) +#define FIT_EXD_DATA_UNITS_RPM ((FIT_EXD_DATA_UNITS)10) +#define FIT_EXD_DATA_UNITS_BPM ((FIT_EXD_DATA_UNITS)11) +#define FIT_EXD_DATA_UNITS_DEGREES ((FIT_EXD_DATA_UNITS)12) +#define FIT_EXD_DATA_UNITS_MILLIMETERS ((FIT_EXD_DATA_UNITS)13) +#define FIT_EXD_DATA_UNITS_METERS ((FIT_EXD_DATA_UNITS)14) +#define FIT_EXD_DATA_UNITS_KILOMETERS ((FIT_EXD_DATA_UNITS)15) +#define FIT_EXD_DATA_UNITS_FEET ((FIT_EXD_DATA_UNITS)16) +#define FIT_EXD_DATA_UNITS_YARDS ((FIT_EXD_DATA_UNITS)17) +#define FIT_EXD_DATA_UNITS_KILOFEET ((FIT_EXD_DATA_UNITS)18) +#define FIT_EXD_DATA_UNITS_MILES ((FIT_EXD_DATA_UNITS)19) +#define FIT_EXD_DATA_UNITS_TIME ((FIT_EXD_DATA_UNITS)20) +#define FIT_EXD_DATA_UNITS_ENUM_TURN_TYPE ((FIT_EXD_DATA_UNITS)21) +#define FIT_EXD_DATA_UNITS_PERCENT ((FIT_EXD_DATA_UNITS)22) +#define FIT_EXD_DATA_UNITS_WATTS ((FIT_EXD_DATA_UNITS)23) +#define FIT_EXD_DATA_UNITS_WATTS_PER_KILOGRAM ((FIT_EXD_DATA_UNITS)24) +#define FIT_EXD_DATA_UNITS_ENUM_BATTERY_STATUS ((FIT_EXD_DATA_UNITS)25) +#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_BEAM_ANGLE_MODE ((FIT_EXD_DATA_UNITS)26) +#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_BATTERY_STATUS ((FIT_EXD_DATA_UNITS)27) +#define FIT_EXD_DATA_UNITS_ENUM_BIKE_LIGHT_NETWORK_CONFIG_TYPE ((FIT_EXD_DATA_UNITS)28) +#define FIT_EXD_DATA_UNITS_LIGHTS ((FIT_EXD_DATA_UNITS)29) +#define FIT_EXD_DATA_UNITS_SECONDS ((FIT_EXD_DATA_UNITS)30) +#define FIT_EXD_DATA_UNITS_MINUTES ((FIT_EXD_DATA_UNITS)31) +#define FIT_EXD_DATA_UNITS_HOURS ((FIT_EXD_DATA_UNITS)32) +#define FIT_EXD_DATA_UNITS_CALORIES ((FIT_EXD_DATA_UNITS)33) +#define FIT_EXD_DATA_UNITS_KILOJOULES ((FIT_EXD_DATA_UNITS)34) +#define FIT_EXD_DATA_UNITS_MILLISECONDS ((FIT_EXD_DATA_UNITS)35) +#define FIT_EXD_DATA_UNITS_SECOND_PER_MILE ((FIT_EXD_DATA_UNITS)36) +#define FIT_EXD_DATA_UNITS_SECOND_PER_KILOMETER ((FIT_EXD_DATA_UNITS)37) +#define FIT_EXD_DATA_UNITS_CENTIMETER ((FIT_EXD_DATA_UNITS)38) +#define FIT_EXD_DATA_UNITS_ENUM_COURSE_POINT ((FIT_EXD_DATA_UNITS)39) +#define FIT_EXD_DATA_UNITS_BRADIANS ((FIT_EXD_DATA_UNITS)40) +#define FIT_EXD_DATA_UNITS_ENUM_SPORT ((FIT_EXD_DATA_UNITS)41) +#define FIT_EXD_DATA_UNITS_INCHES_HG ((FIT_EXD_DATA_UNITS)42) +#define FIT_EXD_DATA_UNITS_MM_HG ((FIT_EXD_DATA_UNITS)43) +#define FIT_EXD_DATA_UNITS_MBARS ((FIT_EXD_DATA_UNITS)44) +#define FIT_EXD_DATA_UNITS_HECTO_PASCALS ((FIT_EXD_DATA_UNITS)45) +#define FIT_EXD_DATA_UNITS_FEET_PER_MIN ((FIT_EXD_DATA_UNITS)46) +#define FIT_EXD_DATA_UNITS_METERS_PER_MIN ((FIT_EXD_DATA_UNITS)47) +#define FIT_EXD_DATA_UNITS_METERS_PER_SEC ((FIT_EXD_DATA_UNITS)48) +#define FIT_EXD_DATA_UNITS_EIGHT_CARDINAL ((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_EXD_QUALIFIERS)0) +#define FIT_EXD_QUALIFIERS_INSTANTANEOUS ((FIT_EXD_QUALIFIERS)1) +#define FIT_EXD_QUALIFIERS_AVERAGE ((FIT_EXD_QUALIFIERS)2) +#define FIT_EXD_QUALIFIERS_LAP ((FIT_EXD_QUALIFIERS)3) +#define FIT_EXD_QUALIFIERS_MAXIMUM ((FIT_EXD_QUALIFIERS)4) +#define FIT_EXD_QUALIFIERS_MAXIMUM_AVERAGE ((FIT_EXD_QUALIFIERS)5) +#define FIT_EXD_QUALIFIERS_MAXIMUM_LAP ((FIT_EXD_QUALIFIERS)6) +#define FIT_EXD_QUALIFIERS_LAST_LAP ((FIT_EXD_QUALIFIERS)7) +#define FIT_EXD_QUALIFIERS_AVERAGE_LAP ((FIT_EXD_QUALIFIERS)8) +#define FIT_EXD_QUALIFIERS_TO_DESTINATION ((FIT_EXD_QUALIFIERS)9) +#define FIT_EXD_QUALIFIERS_TO_GO ((FIT_EXD_QUALIFIERS)10) +#define FIT_EXD_QUALIFIERS_TO_NEXT ((FIT_EXD_QUALIFIERS)11) +#define FIT_EXD_QUALIFIERS_NEXT_COURSE_POINT ((FIT_EXD_QUALIFIERS)12) +#define FIT_EXD_QUALIFIERS_TOTAL ((FIT_EXD_QUALIFIERS)13) +#define FIT_EXD_QUALIFIERS_THREE_SECOND_AVERAGE ((FIT_EXD_QUALIFIERS)14) +#define FIT_EXD_QUALIFIERS_TEN_SECOND_AVERAGE ((FIT_EXD_QUALIFIERS)15) +#define FIT_EXD_QUALIFIERS_THIRTY_SECOND_AVERAGE ((FIT_EXD_QUALIFIERS)16) +#define FIT_EXD_QUALIFIERS_PERCENT_MAXIMUM ((FIT_EXD_QUALIFIERS)17) +#define FIT_EXD_QUALIFIERS_PERCENT_MAXIMUM_AVERAGE ((FIT_EXD_QUALIFIERS)18) +#define FIT_EXD_QUALIFIERS_LAP_PERCENT_MAXIMUM ((FIT_EXD_QUALIFIERS)19) +#define FIT_EXD_QUALIFIERS_ELAPSED ((FIT_EXD_QUALIFIERS)20) +#define FIT_EXD_QUALIFIERS_SUNRISE ((FIT_EXD_QUALIFIERS)21) +#define FIT_EXD_QUALIFIERS_SUNSET ((FIT_EXD_QUALIFIERS)22) +#define FIT_EXD_QUALIFIERS_COMPARED_TO_VIRTUAL_PARTNER ((FIT_EXD_QUALIFIERS)23) +#define FIT_EXD_QUALIFIERS_MAXIMUM_24H ((FIT_EXD_QUALIFIERS)24) +#define FIT_EXD_QUALIFIERS_MINIMUM_24H ((FIT_EXD_QUALIFIERS)25) +#define FIT_EXD_QUALIFIERS_MINIMUM ((FIT_EXD_QUALIFIERS)26) +#define FIT_EXD_QUALIFIERS_FIRST ((FIT_EXD_QUALIFIERS)27) +#define FIT_EXD_QUALIFIERS_SECOND ((FIT_EXD_QUALIFIERS)28) +#define FIT_EXD_QUALIFIERS_THIRD ((FIT_EXD_QUALIFIERS)29) +#define FIT_EXD_QUALIFIERS_SHIFTER ((FIT_EXD_QUALIFIERS)30) +#define FIT_EXD_QUALIFIERS_LAST_SPORT ((FIT_EXD_QUALIFIERS)31) +#define FIT_EXD_QUALIFIERS_MOVING ((FIT_EXD_QUALIFIERS)32) +#define FIT_EXD_QUALIFIERS_STOPPED ((FIT_EXD_QUALIFIERS)33) +#define FIT_EXD_QUALIFIERS_ESTIMATED_TOTAL ((FIT_EXD_QUALIFIERS)34) +#define FIT_EXD_QUALIFIERS_ZONE_9 ((FIT_EXD_QUALIFIERS)242) +#define FIT_EXD_QUALIFIERS_ZONE_8 ((FIT_EXD_QUALIFIERS)243) +#define FIT_EXD_QUALIFIERS_ZONE_7 ((FIT_EXD_QUALIFIERS)244) +#define FIT_EXD_QUALIFIERS_ZONE_6 ((FIT_EXD_QUALIFIERS)245) +#define FIT_EXD_QUALIFIERS_ZONE_5 ((FIT_EXD_QUALIFIERS)246) +#define FIT_EXD_QUALIFIERS_ZONE_4 ((FIT_EXD_QUALIFIERS)247) +#define FIT_EXD_QUALIFIERS_ZONE_3 ((FIT_EXD_QUALIFIERS)248) +#define FIT_EXD_QUALIFIERS_ZONE_2 ((FIT_EXD_QUALIFIERS)249) +#define FIT_EXD_QUALIFIERS_ZONE_1 ((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_EXD_DESCRIPTORS)0) +#define FIT_EXD_DESCRIPTORS_BEAM_ANGLE_STATUS ((FIT_EXD_DESCRIPTORS)1) +#define FIT_EXD_DESCRIPTORS_BATERY_LEVEL ((FIT_EXD_DESCRIPTORS)2) +#define FIT_EXD_DESCRIPTORS_LIGHT_NETWORK_MODE ((FIT_EXD_DESCRIPTORS)3) +#define FIT_EXD_DESCRIPTORS_NUMBER_LIGHTS_CONNECTED ((FIT_EXD_DESCRIPTORS)4) +#define FIT_EXD_DESCRIPTORS_CADENCE ((FIT_EXD_DESCRIPTORS)5) +#define FIT_EXD_DESCRIPTORS_DISTANCE ((FIT_EXD_DESCRIPTORS)6) +#define FIT_EXD_DESCRIPTORS_ESTIMATED_TIME_OF_ARRIVAL ((FIT_EXD_DESCRIPTORS)7) +#define FIT_EXD_DESCRIPTORS_HEADING ((FIT_EXD_DESCRIPTORS)8) +#define FIT_EXD_DESCRIPTORS_TIME ((FIT_EXD_DESCRIPTORS)9) +#define FIT_EXD_DESCRIPTORS_BATTERY_LEVEL ((FIT_EXD_DESCRIPTORS)10) +#define FIT_EXD_DESCRIPTORS_TRAINER_RESISTANCE ((FIT_EXD_DESCRIPTORS)11) +#define FIT_EXD_DESCRIPTORS_TRAINER_TARGET_POWER ((FIT_EXD_DESCRIPTORS)12) +#define FIT_EXD_DESCRIPTORS_TIME_SEATED ((FIT_EXD_DESCRIPTORS)13) +#define FIT_EXD_DESCRIPTORS_TIME_STANDING ((FIT_EXD_DESCRIPTORS)14) +#define FIT_EXD_DESCRIPTORS_ELEVATION ((FIT_EXD_DESCRIPTORS)15) +#define FIT_EXD_DESCRIPTORS_GRADE ((FIT_EXD_DESCRIPTORS)16) +#define FIT_EXD_DESCRIPTORS_ASCENT ((FIT_EXD_DESCRIPTORS)17) +#define FIT_EXD_DESCRIPTORS_DESCENT ((FIT_EXD_DESCRIPTORS)18) +#define FIT_EXD_DESCRIPTORS_VERTICAL_SPEED ((FIT_EXD_DESCRIPTORS)19) +#define FIT_EXD_DESCRIPTORS_DI2_BATTERY_LEVEL ((FIT_EXD_DESCRIPTORS)20) +#define FIT_EXD_DESCRIPTORS_FRONT_GEAR ((FIT_EXD_DESCRIPTORS)21) +#define FIT_EXD_DESCRIPTORS_REAR_GEAR ((FIT_EXD_DESCRIPTORS)22) +#define FIT_EXD_DESCRIPTORS_GEAR_RATIO ((FIT_EXD_DESCRIPTORS)23) +#define FIT_EXD_DESCRIPTORS_HEART_RATE ((FIT_EXD_DESCRIPTORS)24) +#define FIT_EXD_DESCRIPTORS_HEART_RATE_ZONE ((FIT_EXD_DESCRIPTORS)25) +#define FIT_EXD_DESCRIPTORS_TIME_IN_HEART_RATE_ZONE ((FIT_EXD_DESCRIPTORS)26) +#define FIT_EXD_DESCRIPTORS_HEART_RATE_RESERVE ((FIT_EXD_DESCRIPTORS)27) +#define FIT_EXD_DESCRIPTORS_CALORIES ((FIT_EXD_DESCRIPTORS)28) +#define FIT_EXD_DESCRIPTORS_GPS_ACCURACY ((FIT_EXD_DESCRIPTORS)29) +#define FIT_EXD_DESCRIPTORS_GPS_SIGNAL_STRENGTH ((FIT_EXD_DESCRIPTORS)30) +#define FIT_EXD_DESCRIPTORS_TEMPERATURE ((FIT_EXD_DESCRIPTORS)31) +#define FIT_EXD_DESCRIPTORS_TIME_OF_DAY ((FIT_EXD_DESCRIPTORS)32) +#define FIT_EXD_DESCRIPTORS_BALANCE ((FIT_EXD_DESCRIPTORS)33) +#define FIT_EXD_DESCRIPTORS_PEDAL_SMOOTHNESS ((FIT_EXD_DESCRIPTORS)34) +#define FIT_EXD_DESCRIPTORS_POWER ((FIT_EXD_DESCRIPTORS)35) +#define FIT_EXD_DESCRIPTORS_FUNCTIONAL_THRESHOLD_POWER ((FIT_EXD_DESCRIPTORS)36) +#define FIT_EXD_DESCRIPTORS_INTENSITY_FACTOR ((FIT_EXD_DESCRIPTORS)37) +#define FIT_EXD_DESCRIPTORS_WORK ((FIT_EXD_DESCRIPTORS)38) +#define FIT_EXD_DESCRIPTORS_POWER_RATIO ((FIT_EXD_DESCRIPTORS)39) +#define FIT_EXD_DESCRIPTORS_NORMALIZED_POWER ((FIT_EXD_DESCRIPTORS)40) +#define FIT_EXD_DESCRIPTORS_TRAINING_STRESS_SCORE ((FIT_EXD_DESCRIPTORS)41) +#define FIT_EXD_DESCRIPTORS_TIME_ON_ZONE ((FIT_EXD_DESCRIPTORS)42) +#define FIT_EXD_DESCRIPTORS_SPEED ((FIT_EXD_DESCRIPTORS)43) +#define FIT_EXD_DESCRIPTORS_LAPS ((FIT_EXD_DESCRIPTORS)44) +#define FIT_EXD_DESCRIPTORS_REPS ((FIT_EXD_DESCRIPTORS)45) +#define FIT_EXD_DESCRIPTORS_WORKOUT_STEP ((FIT_EXD_DESCRIPTORS)46) +#define FIT_EXD_DESCRIPTORS_COURSE_DISTANCE ((FIT_EXD_DESCRIPTORS)47) +#define FIT_EXD_DESCRIPTORS_NAVIGATION_DISTANCE ((FIT_EXD_DESCRIPTORS)48) +#define FIT_EXD_DESCRIPTORS_COURSE_ESTIMATED_TIME_OF_ARRIVAL ((FIT_EXD_DESCRIPTORS)49) +#define FIT_EXD_DESCRIPTORS_NAVIGATION_ESTIMATED_TIME_OF_ARRIVAL ((FIT_EXD_DESCRIPTORS)50) +#define FIT_EXD_DESCRIPTORS_COURSE_TIME ((FIT_EXD_DESCRIPTORS)51) +#define FIT_EXD_DESCRIPTORS_NAVIGATION_TIME ((FIT_EXD_DESCRIPTORS)52) +#define FIT_EXD_DESCRIPTORS_COURSE_HEADING ((FIT_EXD_DESCRIPTORS)53) +#define FIT_EXD_DESCRIPTORS_NAVIGATION_HEADING ((FIT_EXD_DESCRIPTORS)54) +#define FIT_EXD_DESCRIPTORS_POWER_ZONE ((FIT_EXD_DESCRIPTORS)55) +#define FIT_EXD_DESCRIPTORS_TORQUE_EFFECTIVENESS ((FIT_EXD_DESCRIPTORS)56) +#define FIT_EXD_DESCRIPTORS_TIMER_TIME ((FIT_EXD_DESCRIPTORS)57) +#define FIT_EXD_DESCRIPTORS_POWER_WEIGHT_RATIO ((FIT_EXD_DESCRIPTORS)58) +#define FIT_EXD_DESCRIPTORS_LEFT_PLATFORM_CENTER_OFFSET ((FIT_EXD_DESCRIPTORS)59) +#define FIT_EXD_DESCRIPTORS_RIGHT_PLATFORM_CENTER_OFFSET ((FIT_EXD_DESCRIPTORS)60) +#define FIT_EXD_DESCRIPTORS_LEFT_POWER_PHASE_START_ANGLE ((FIT_EXD_DESCRIPTORS)61) +#define FIT_EXD_DESCRIPTORS_RIGHT_POWER_PHASE_START_ANGLE ((FIT_EXD_DESCRIPTORS)62) +#define FIT_EXD_DESCRIPTORS_LEFT_POWER_PHASE_FINISH_ANGLE ((FIT_EXD_DESCRIPTORS)63) +#define FIT_EXD_DESCRIPTORS_RIGHT_POWER_PHASE_FINISH_ANGLE ((FIT_EXD_DESCRIPTORS)64) +#define FIT_EXD_DESCRIPTORS_GEARS ((FIT_EXD_DESCRIPTORS)65) // Combined gear information +#define FIT_EXD_DESCRIPTORS_PACE ((FIT_EXD_DESCRIPTORS)66) +#define FIT_EXD_DESCRIPTORS_TRAINING_EFFECT ((FIT_EXD_DESCRIPTORS)67) +#define FIT_EXD_DESCRIPTORS_VERTICAL_OSCILLATION ((FIT_EXD_DESCRIPTORS)68) +#define FIT_EXD_DESCRIPTORS_VERTICAL_RATIO ((FIT_EXD_DESCRIPTORS)69) +#define FIT_EXD_DESCRIPTORS_GROUND_CONTACT_TIME ((FIT_EXD_DESCRIPTORS)70) +#define FIT_EXD_DESCRIPTORS_LEFT_GROUND_CONTACT_TIME_BALANCE ((FIT_EXD_DESCRIPTORS)71) +#define FIT_EXD_DESCRIPTORS_RIGHT_GROUND_CONTACT_TIME_BALANCE ((FIT_EXD_DESCRIPTORS)72) +#define FIT_EXD_DESCRIPTORS_STRIDE_LENGTH ((FIT_EXD_DESCRIPTORS)73) +#define FIT_EXD_DESCRIPTORS_RUNNING_CADENCE ((FIT_EXD_DESCRIPTORS)74) +#define FIT_EXD_DESCRIPTORS_PERFORMANCE_CONDITION ((FIT_EXD_DESCRIPTORS)75) +#define FIT_EXD_DESCRIPTORS_COURSE_TYPE ((FIT_EXD_DESCRIPTORS)76) +#define FIT_EXD_DESCRIPTORS_TIME_IN_POWER_ZONE ((FIT_EXD_DESCRIPTORS)77) +#define FIT_EXD_DESCRIPTORS_NAVIGATION_TURN ((FIT_EXD_DESCRIPTORS)78) +#define FIT_EXD_DESCRIPTORS_COURSE_LOCATION ((FIT_EXD_DESCRIPTORS)79) +#define FIT_EXD_DESCRIPTORS_NAVIGATION_LOCATION ((FIT_EXD_DESCRIPTORS)80) +#define FIT_EXD_DESCRIPTORS_COMPASS ((FIT_EXD_DESCRIPTORS)81) +#define FIT_EXD_DESCRIPTORS_GEAR_COMBO ((FIT_EXD_DESCRIPTORS)82) +#define FIT_EXD_DESCRIPTORS_MUSCLE_OXYGEN ((FIT_EXD_DESCRIPTORS)83) +#define FIT_EXD_DESCRIPTORS_ICON ((FIT_EXD_DESCRIPTORS)84) +#define FIT_EXD_DESCRIPTORS_COMPASS_HEADING ((FIT_EXD_DESCRIPTORS)85) +#define FIT_EXD_DESCRIPTORS_GPS_HEADING ((FIT_EXD_DESCRIPTORS)86) +#define FIT_EXD_DESCRIPTORS_GPS_ELEVATION ((FIT_EXD_DESCRIPTORS)87) +#define FIT_EXD_DESCRIPTORS_ANAEROBIC_TRAINING_EFFECT ((FIT_EXD_DESCRIPTORS)88) +#define FIT_EXD_DESCRIPTORS_COURSE ((FIT_EXD_DESCRIPTORS)89) +#define FIT_EXD_DESCRIPTORS_OFF_COURSE ((FIT_EXD_DESCRIPTORS)90) +#define FIT_EXD_DESCRIPTORS_GLIDE_RATIO ((FIT_EXD_DESCRIPTORS)91) +#define FIT_EXD_DESCRIPTORS_VERTICAL_DISTANCE ((FIT_EXD_DESCRIPTORS)92) +#define FIT_EXD_DESCRIPTORS_VMG ((FIT_EXD_DESCRIPTORS)93) +#define FIT_EXD_DESCRIPTORS_AMBIENT_PRESSURE ((FIT_EXD_DESCRIPTORS)94) +#define FIT_EXD_DESCRIPTORS_PRESSURE ((FIT_EXD_DESCRIPTORS)95) +#define FIT_EXD_DESCRIPTORS_VAM ((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_AUTO_ACTIVITY_DETECT)0x00000000) +#define FIT_AUTO_ACTIVITY_DETECT_RUNNING ((FIT_AUTO_ACTIVITY_DETECT)0x00000001) +#define FIT_AUTO_ACTIVITY_DETECT_CYCLING ((FIT_AUTO_ACTIVITY_DETECT)0x00000002) +#define FIT_AUTO_ACTIVITY_DETECT_SWIMMING ((FIT_AUTO_ACTIVITY_DETECT)0x00000004) +#define FIT_AUTO_ACTIVITY_DETECT_WALKING ((FIT_AUTO_ACTIVITY_DETECT)0x00000008) +#define FIT_AUTO_ACTIVITY_DETECT_ELLIPTICAL ((FIT_AUTO_ACTIVITY_DETECT)0x00000020) +#define FIT_AUTO_ACTIVITY_DETECT_SEDENTARY ((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_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000001) +#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000002) +#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000004) +#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL_RIGHT_SPLIT ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000008) +#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL_BOTTOM_SPLIT ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000010) +#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_FULL_QUARTER_SPLIT ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000020) +#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_VERTICAL_LEFT_SPLIT ((FIT_SUPPORTED_EXD_SCREEN_LAYOUTS)0x00000040) +#define FIT_SUPPORTED_EXD_SCREEN_LAYOUTS_HALF_HORIZONTAL_TOP_SPLIT ((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_FIT_BASE_TYPE)0) +#define FIT_FIT_BASE_TYPE_SINT8 ((FIT_FIT_BASE_TYPE)1) +#define FIT_FIT_BASE_TYPE_UINT8 ((FIT_FIT_BASE_TYPE)2) +#define FIT_FIT_BASE_TYPE_SINT16 ((FIT_FIT_BASE_TYPE)131) +#define FIT_FIT_BASE_TYPE_UINT16 ((FIT_FIT_BASE_TYPE)132) +#define FIT_FIT_BASE_TYPE_SINT32 ((FIT_FIT_BASE_TYPE)133) +#define FIT_FIT_BASE_TYPE_UINT32 ((FIT_FIT_BASE_TYPE)134) +#define FIT_FIT_BASE_TYPE_STRING ((FIT_FIT_BASE_TYPE)7) +#define FIT_FIT_BASE_TYPE_FLOAT32 ((FIT_FIT_BASE_TYPE)136) +#define FIT_FIT_BASE_TYPE_FLOAT64 ((FIT_FIT_BASE_TYPE)137) +#define FIT_FIT_BASE_TYPE_UINT8Z ((FIT_FIT_BASE_TYPE)10) +#define FIT_FIT_BASE_TYPE_UINT16Z ((FIT_FIT_BASE_TYPE)139) +#define FIT_FIT_BASE_TYPE_UINT32Z ((FIT_FIT_BASE_TYPE)140) +#define FIT_FIT_BASE_TYPE_BYTE ((FIT_FIT_BASE_TYPE)13) +#define FIT_FIT_BASE_TYPE_SINT64 ((FIT_FIT_BASE_TYPE)142) +#define FIT_FIT_BASE_TYPE_UINT64 ((FIT_FIT_BASE_TYPE)143) +#define FIT_FIT_BASE_TYPE_UINT64Z ((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_TURN_TYPE)0) +#define FIT_TURN_TYPE_ARRIVING_LEFT_IDX ((FIT_TURN_TYPE)1) +#define FIT_TURN_TYPE_ARRIVING_RIGHT_IDX ((FIT_TURN_TYPE)2) +#define FIT_TURN_TYPE_ARRIVING_VIA_IDX ((FIT_TURN_TYPE)3) +#define FIT_TURN_TYPE_ARRIVING_VIA_LEFT_IDX ((FIT_TURN_TYPE)4) +#define FIT_TURN_TYPE_ARRIVING_VIA_RIGHT_IDX ((FIT_TURN_TYPE)5) +#define FIT_TURN_TYPE_BEAR_KEEP_LEFT_IDX ((FIT_TURN_TYPE)6) +#define FIT_TURN_TYPE_BEAR_KEEP_RIGHT_IDX ((FIT_TURN_TYPE)7) +#define FIT_TURN_TYPE_CONTINUE_IDX ((FIT_TURN_TYPE)8) +#define FIT_TURN_TYPE_EXIT_LEFT_IDX ((FIT_TURN_TYPE)9) +#define FIT_TURN_TYPE_EXIT_RIGHT_IDX ((FIT_TURN_TYPE)10) +#define FIT_TURN_TYPE_FERRY_IDX ((FIT_TURN_TYPE)11) +#define FIT_TURN_TYPE_ROUNDABOUT_45_IDX ((FIT_TURN_TYPE)12) +#define FIT_TURN_TYPE_ROUNDABOUT_90_IDX ((FIT_TURN_TYPE)13) +#define FIT_TURN_TYPE_ROUNDABOUT_135_IDX ((FIT_TURN_TYPE)14) +#define FIT_TURN_TYPE_ROUNDABOUT_180_IDX ((FIT_TURN_TYPE)15) +#define FIT_TURN_TYPE_ROUNDABOUT_225_IDX ((FIT_TURN_TYPE)16) +#define FIT_TURN_TYPE_ROUNDABOUT_270_IDX ((FIT_TURN_TYPE)17) +#define FIT_TURN_TYPE_ROUNDABOUT_315_IDX ((FIT_TURN_TYPE)18) +#define FIT_TURN_TYPE_ROUNDABOUT_360_IDX ((FIT_TURN_TYPE)19) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_45_IDX ((FIT_TURN_TYPE)20) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_90_IDX ((FIT_TURN_TYPE)21) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_135_IDX ((FIT_TURN_TYPE)22) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_180_IDX ((FIT_TURN_TYPE)23) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_225_IDX ((FIT_TURN_TYPE)24) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_270_IDX ((FIT_TURN_TYPE)25) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_315_IDX ((FIT_TURN_TYPE)26) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_360_IDX ((FIT_TURN_TYPE)27) +#define FIT_TURN_TYPE_ROUNDABOUT_GENERIC_IDX ((FIT_TURN_TYPE)28) +#define FIT_TURN_TYPE_ROUNDABOUT_NEG_GENERIC_IDX ((FIT_TURN_TYPE)29) +#define FIT_TURN_TYPE_SHARP_TURN_LEFT_IDX ((FIT_TURN_TYPE)30) +#define FIT_TURN_TYPE_SHARP_TURN_RIGHT_IDX ((FIT_TURN_TYPE)31) +#define FIT_TURN_TYPE_TURN_LEFT_IDX ((FIT_TURN_TYPE)32) +#define FIT_TURN_TYPE_TURN_RIGHT_IDX ((FIT_TURN_TYPE)33) +#define FIT_TURN_TYPE_UTURN_LEFT_IDX ((FIT_TURN_TYPE)34) +#define FIT_TURN_TYPE_UTURN_RIGHT_IDX ((FIT_TURN_TYPE)35) +#define FIT_TURN_TYPE_ICON_INV_IDX ((FIT_TURN_TYPE)36) +#define FIT_TURN_TYPE_ICON_IDX_CNT ((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_BIKE_LIGHT_BEAM_ANGLE_MODE)0) +#define FIT_BIKE_LIGHT_BEAM_ANGLE_MODE_AUTO ((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_FIT_BASE_UNIT)0) +#define FIT_FIT_BASE_UNIT_KILOGRAM ((FIT_FIT_BASE_UNIT)1) +#define FIT_FIT_BASE_UNIT_POUND ((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_SET_TYPE)0) +#define FIT_SET_TYPE_ACTIVE ((FIT_SET_TYPE)1) +#define FIT_SET_TYPE_COUNT 2 + +typedef FIT_UINT16 FIT_EXERCISE_CATEGORY; +#define FIT_EXERCISE_CATEGORY_INVALID FIT_UINT16_INVALID +#define FIT_EXERCISE_CATEGORY_BENCH_PRESS ((FIT_EXERCISE_CATEGORY)0) +#define FIT_EXERCISE_CATEGORY_CALF_RAISE ((FIT_EXERCISE_CATEGORY)1) +#define FIT_EXERCISE_CATEGORY_CARDIO ((FIT_EXERCISE_CATEGORY)2) +#define FIT_EXERCISE_CATEGORY_CARRY ((FIT_EXERCISE_CATEGORY)3) +#define FIT_EXERCISE_CATEGORY_CHOP ((FIT_EXERCISE_CATEGORY)4) +#define FIT_EXERCISE_CATEGORY_CORE ((FIT_EXERCISE_CATEGORY)5) +#define FIT_EXERCISE_CATEGORY_CRUNCH ((FIT_EXERCISE_CATEGORY)6) +#define FIT_EXERCISE_CATEGORY_CURL ((FIT_EXERCISE_CATEGORY)7) +#define FIT_EXERCISE_CATEGORY_DEADLIFT ((FIT_EXERCISE_CATEGORY)8) +#define FIT_EXERCISE_CATEGORY_FLYE ((FIT_EXERCISE_CATEGORY)9) +#define FIT_EXERCISE_CATEGORY_HIP_RAISE ((FIT_EXERCISE_CATEGORY)10) +#define FIT_EXERCISE_CATEGORY_HIP_STABILITY ((FIT_EXERCISE_CATEGORY)11) +#define FIT_EXERCISE_CATEGORY_HIP_SWING ((FIT_EXERCISE_CATEGORY)12) +#define FIT_EXERCISE_CATEGORY_HYPEREXTENSION ((FIT_EXERCISE_CATEGORY)13) +#define FIT_EXERCISE_CATEGORY_LATERAL_RAISE ((FIT_EXERCISE_CATEGORY)14) +#define FIT_EXERCISE_CATEGORY_LEG_CURL ((FIT_EXERCISE_CATEGORY)15) +#define FIT_EXERCISE_CATEGORY_LEG_RAISE ((FIT_EXERCISE_CATEGORY)16) +#define FIT_EXERCISE_CATEGORY_LUNGE ((FIT_EXERCISE_CATEGORY)17) +#define FIT_EXERCISE_CATEGORY_OLYMPIC_LIFT ((FIT_EXERCISE_CATEGORY)18) +#define FIT_EXERCISE_CATEGORY_PLANK ((FIT_EXERCISE_CATEGORY)19) +#define FIT_EXERCISE_CATEGORY_PLYO ((FIT_EXERCISE_CATEGORY)20) +#define FIT_EXERCISE_CATEGORY_PULL_UP ((FIT_EXERCISE_CATEGORY)21) +#define FIT_EXERCISE_CATEGORY_PUSH_UP ((FIT_EXERCISE_CATEGORY)22) +#define FIT_EXERCISE_CATEGORY_ROW ((FIT_EXERCISE_CATEGORY)23) +#define FIT_EXERCISE_CATEGORY_SHOULDER_PRESS ((FIT_EXERCISE_CATEGORY)24) +#define FIT_EXERCISE_CATEGORY_SHOULDER_STABILITY ((FIT_EXERCISE_CATEGORY)25) +#define FIT_EXERCISE_CATEGORY_SHRUG ((FIT_EXERCISE_CATEGORY)26) +#define FIT_EXERCISE_CATEGORY_SIT_UP ((FIT_EXERCISE_CATEGORY)27) +#define FIT_EXERCISE_CATEGORY_SQUAT ((FIT_EXERCISE_CATEGORY)28) +#define FIT_EXERCISE_CATEGORY_TOTAL_BODY ((FIT_EXERCISE_CATEGORY)29) +#define FIT_EXERCISE_CATEGORY_TRICEPS_EXTENSION ((FIT_EXERCISE_CATEGORY)30) +#define FIT_EXERCISE_CATEGORY_WARM_UP ((FIT_EXERCISE_CATEGORY)31) +#define FIT_EXERCISE_CATEGORY_RUN ((FIT_EXERCISE_CATEGORY)32) +#define FIT_EXERCISE_CATEGORY_UNKNOWN ((FIT_EXERCISE_CATEGORY)65534) +#define FIT_EXERCISE_CATEGORY_COUNT 34 + +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_BENCH_PRESS_EXERCISE_NAME)0) +#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)1) +#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_BOARD_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)2) +#define FIT_BENCH_PRESS_EXERCISE_NAME_BARBELL_FLOOR_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)3) +#define FIT_BENCH_PRESS_EXERCISE_NAME_CLOSE_GRIP_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)4) +#define FIT_BENCH_PRESS_EXERCISE_NAME_DECLINE_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)5) +#define FIT_BENCH_PRESS_EXERCISE_NAME_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)6) +#define FIT_BENCH_PRESS_EXERCISE_NAME_DUMBBELL_FLOOR_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)7) +#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)8) +#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)9) +#define FIT_BENCH_PRESS_EXERCISE_NAME_INCLINE_SMITH_MACHINE_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)10) +#define FIT_BENCH_PRESS_EXERCISE_NAME_ISOMETRIC_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)11) +#define FIT_BENCH_PRESS_EXERCISE_NAME_KETTLEBELL_CHEST_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)12) +#define FIT_BENCH_PRESS_EXERCISE_NAME_NEUTRAL_GRIP_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)13) +#define FIT_BENCH_PRESS_EXERCISE_NAME_NEUTRAL_GRIP_DUMBBELL_INCLINE_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)14) +#define FIT_BENCH_PRESS_EXERCISE_NAME_ONE_ARM_FLOOR_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)15) +#define FIT_BENCH_PRESS_EXERCISE_NAME_WEIGHTED_ONE_ARM_FLOOR_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)16) +#define FIT_BENCH_PRESS_EXERCISE_NAME_PARTIAL_LOCKOUT ((FIT_BENCH_PRESS_EXERCISE_NAME)17) +#define FIT_BENCH_PRESS_EXERCISE_NAME_REVERSE_GRIP_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)18) +#define FIT_BENCH_PRESS_EXERCISE_NAME_REVERSE_GRIP_INCLINE_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)19) +#define FIT_BENCH_PRESS_EXERCISE_NAME_SINGLE_ARM_CABLE_CHEST_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)20) +#define FIT_BENCH_PRESS_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)21) +#define FIT_BENCH_PRESS_EXERCISE_NAME_SMITH_MACHINE_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)22) +#define FIT_BENCH_PRESS_EXERCISE_NAME_SWISS_BALL_DUMBBELL_CHEST_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)23) +#define FIT_BENCH_PRESS_EXERCISE_NAME_TRIPLE_STOP_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)24) +#define FIT_BENCH_PRESS_EXERCISE_NAME_WIDE_GRIP_BARBELL_BENCH_PRESS ((FIT_BENCH_PRESS_EXERCISE_NAME)25) +#define FIT_BENCH_PRESS_EXERCISE_NAME_ALTERNATING_DUMBBELL_CHEST_PRESS ((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_CALF_RAISE_EXERCISE_NAME)0) +#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_WEIGHTED_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)1) +#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_SINGLE_LEG_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)2) +#define FIT_CALF_RAISE_EXERCISE_NAME_3_WAY_WEIGHTED_SINGLE_LEG_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)3) +#define FIT_CALF_RAISE_EXERCISE_NAME_DONKEY_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)4) +#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_DONKEY_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)5) +#define FIT_CALF_RAISE_EXERCISE_NAME_SEATED_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)6) +#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SEATED_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)7) +#define FIT_CALF_RAISE_EXERCISE_NAME_SEATED_DUMBBELL_TOE_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)8) +#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_BENT_KNEE_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)9) +#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENT_KNEE_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)10) +#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_DECLINE_PUSH_UP ((FIT_CALF_RAISE_EXERCISE_NAME)11) +#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_DONKEY_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)12) +#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_DONKEY_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)13) +#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_KNEE_HOLD ((FIT_CALF_RAISE_EXERCISE_NAME)14) +#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_STANDING_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)15) +#define FIT_CALF_RAISE_EXERCISE_NAME_SINGLE_LEG_STANDING_DUMBBELL_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)16) +#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_BARBELL_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)17) +#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)18) +#define FIT_CALF_RAISE_EXERCISE_NAME_WEIGHTED_STANDING_CALF_RAISE ((FIT_CALF_RAISE_EXERCISE_NAME)19) +#define FIT_CALF_RAISE_EXERCISE_NAME_STANDING_DUMBBELL_CALF_RAISE ((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_CARDIO_EXERCISE_NAME)0) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_BOB_AND_WEAVE_CIRCLE ((FIT_CARDIO_EXERCISE_NAME)1) +#define FIT_CARDIO_EXERCISE_NAME_CARDIO_CORE_CRAWL ((FIT_CARDIO_EXERCISE_NAME)2) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_CARDIO_CORE_CRAWL ((FIT_CARDIO_EXERCISE_NAME)3) +#define FIT_CARDIO_EXERCISE_NAME_DOUBLE_UNDER ((FIT_CARDIO_EXERCISE_NAME)4) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_DOUBLE_UNDER ((FIT_CARDIO_EXERCISE_NAME)5) +#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE ((FIT_CARDIO_EXERCISE_NAME)6) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE ((FIT_CARDIO_EXERCISE_NAME)7) +#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE_CROSSOVER ((FIT_CARDIO_EXERCISE_NAME)8) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE_CROSSOVER ((FIT_CARDIO_EXERCISE_NAME)9) +#define FIT_CARDIO_EXERCISE_NAME_JUMP_ROPE_JOG ((FIT_CARDIO_EXERCISE_NAME)10) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMP_ROPE_JOG ((FIT_CARDIO_EXERCISE_NAME)11) +#define FIT_CARDIO_EXERCISE_NAME_JUMPING_JACKS ((FIT_CARDIO_EXERCISE_NAME)12) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_JUMPING_JACKS ((FIT_CARDIO_EXERCISE_NAME)13) +#define FIT_CARDIO_EXERCISE_NAME_SKI_MOGULS ((FIT_CARDIO_EXERCISE_NAME)14) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SKI_MOGULS ((FIT_CARDIO_EXERCISE_NAME)15) +#define FIT_CARDIO_EXERCISE_NAME_SPLIT_JACKS ((FIT_CARDIO_EXERCISE_NAME)16) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SPLIT_JACKS ((FIT_CARDIO_EXERCISE_NAME)17) +#define FIT_CARDIO_EXERCISE_NAME_SQUAT_JACKS ((FIT_CARDIO_EXERCISE_NAME)18) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_SQUAT_JACKS ((FIT_CARDIO_EXERCISE_NAME)19) +#define FIT_CARDIO_EXERCISE_NAME_TRIPLE_UNDER ((FIT_CARDIO_EXERCISE_NAME)20) +#define FIT_CARDIO_EXERCISE_NAME_WEIGHTED_TRIPLE_UNDER ((FIT_CARDIO_EXERCISE_NAME)21) +#define FIT_CARDIO_EXERCISE_NAME_COUNT 22 + +typedef FIT_UINT16 FIT_CARRY_EXERCISE_NAME; +#define FIT_CARRY_EXERCISE_NAME_INVALID FIT_UINT16_INVALID +#define FIT_CARRY_EXERCISE_NAME_BAR_HOLDS ((FIT_CARRY_EXERCISE_NAME)0) +#define FIT_CARRY_EXERCISE_NAME_FARMERS_WALK ((FIT_CARRY_EXERCISE_NAME)1) +#define FIT_CARRY_EXERCISE_NAME_FARMERS_WALK_ON_TOES ((FIT_CARRY_EXERCISE_NAME)2) +#define FIT_CARRY_EXERCISE_NAME_HEX_DUMBBELL_HOLD ((FIT_CARRY_EXERCISE_NAME)3) +#define FIT_CARRY_EXERCISE_NAME_OVERHEAD_CARRY ((FIT_CARRY_EXERCISE_NAME)4) +#define FIT_CARRY_EXERCISE_NAME_COUNT 5 + +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_CHOP_EXERCISE_NAME)0) +#define FIT_CHOP_EXERCISE_NAME_CABLE_ROTATIONAL_LIFT ((FIT_CHOP_EXERCISE_NAME)1) +#define FIT_CHOP_EXERCISE_NAME_CABLE_WOODCHOP ((FIT_CHOP_EXERCISE_NAME)2) +#define FIT_CHOP_EXERCISE_NAME_CROSS_CHOP_TO_KNEE ((FIT_CHOP_EXERCISE_NAME)3) +#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_CROSS_CHOP_TO_KNEE ((FIT_CHOP_EXERCISE_NAME)4) +#define FIT_CHOP_EXERCISE_NAME_DUMBBELL_CHOP ((FIT_CHOP_EXERCISE_NAME)5) +#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATION ((FIT_CHOP_EXERCISE_NAME)6) +#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_HALF_KNEELING_ROTATION ((FIT_CHOP_EXERCISE_NAME)7) +#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATIONAL_CHOP ((FIT_CHOP_EXERCISE_NAME)8) +#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_ROTATIONAL_REVERSE_CHOP ((FIT_CHOP_EXERCISE_NAME)9) +#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_STABILITY_CHOP ((FIT_CHOP_EXERCISE_NAME)10) +#define FIT_CHOP_EXERCISE_NAME_HALF_KNEELING_STABILITY_REVERSE_CHOP ((FIT_CHOP_EXERCISE_NAME)11) +#define FIT_CHOP_EXERCISE_NAME_KNEELING_ROTATIONAL_CHOP ((FIT_CHOP_EXERCISE_NAME)12) +#define FIT_CHOP_EXERCISE_NAME_KNEELING_ROTATIONAL_REVERSE_CHOP ((FIT_CHOP_EXERCISE_NAME)13) +#define FIT_CHOP_EXERCISE_NAME_KNEELING_STABILITY_CHOP ((FIT_CHOP_EXERCISE_NAME)14) +#define FIT_CHOP_EXERCISE_NAME_KNEELING_WOODCHOPPER ((FIT_CHOP_EXERCISE_NAME)15) +#define FIT_CHOP_EXERCISE_NAME_MEDICINE_BALL_WOOD_CHOPS ((FIT_CHOP_EXERCISE_NAME)16) +#define FIT_CHOP_EXERCISE_NAME_POWER_SQUAT_CHOPS ((FIT_CHOP_EXERCISE_NAME)17) +#define FIT_CHOP_EXERCISE_NAME_WEIGHTED_POWER_SQUAT_CHOPS ((FIT_CHOP_EXERCISE_NAME)18) +#define FIT_CHOP_EXERCISE_NAME_STANDING_ROTATIONAL_CHOP ((FIT_CHOP_EXERCISE_NAME)19) +#define FIT_CHOP_EXERCISE_NAME_STANDING_SPLIT_ROTATIONAL_CHOP ((FIT_CHOP_EXERCISE_NAME)20) +#define FIT_CHOP_EXERCISE_NAME_STANDING_SPLIT_ROTATIONAL_REVERSE_CHOP ((FIT_CHOP_EXERCISE_NAME)21) +#define FIT_CHOP_EXERCISE_NAME_STANDING_STABILITY_REVERSE_CHOP ((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_CORE_EXERCISE_NAME)0) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ABS_JABS ((FIT_CORE_EXERCISE_NAME)1) +#define FIT_CORE_EXERCISE_NAME_ALTERNATING_PLATE_REACH ((FIT_CORE_EXERCISE_NAME)2) +#define FIT_CORE_EXERCISE_NAME_BARBELL_ROLLOUT ((FIT_CORE_EXERCISE_NAME)3) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_BARBELL_ROLLOUT ((FIT_CORE_EXERCISE_NAME)4) +#define FIT_CORE_EXERCISE_NAME_BODY_BAR_OBLIQUE_TWIST ((FIT_CORE_EXERCISE_NAME)5) +#define FIT_CORE_EXERCISE_NAME_CABLE_CORE_PRESS ((FIT_CORE_EXERCISE_NAME)6) +#define FIT_CORE_EXERCISE_NAME_CABLE_SIDE_BEND ((FIT_CORE_EXERCISE_NAME)7) +#define FIT_CORE_EXERCISE_NAME_SIDE_BEND ((FIT_CORE_EXERCISE_NAME)8) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SIDE_BEND ((FIT_CORE_EXERCISE_NAME)9) +#define FIT_CORE_EXERCISE_NAME_CRESCENT_CIRCLE ((FIT_CORE_EXERCISE_NAME)10) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_CRESCENT_CIRCLE ((FIT_CORE_EXERCISE_NAME)11) +#define FIT_CORE_EXERCISE_NAME_CYCLING_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)12) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_CYCLING_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)13) +#define FIT_CORE_EXERCISE_NAME_ELEVATED_FEET_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)14) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)15) +#define FIT_CORE_EXERCISE_NAME_HALF_TURKISH_GET_UP ((FIT_CORE_EXERCISE_NAME)16) +#define FIT_CORE_EXERCISE_NAME_KETTLEBELL_WINDMILL ((FIT_CORE_EXERCISE_NAME)17) +#define FIT_CORE_EXERCISE_NAME_KNEELING_AB_WHEEL ((FIT_CORE_EXERCISE_NAME)18) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_KNEELING_AB_WHEEL ((FIT_CORE_EXERCISE_NAME)19) +#define FIT_CORE_EXERCISE_NAME_MODIFIED_FRONT_LEVER ((FIT_CORE_EXERCISE_NAME)20) +#define FIT_CORE_EXERCISE_NAME_OPEN_KNEE_TUCKS ((FIT_CORE_EXERCISE_NAME)21) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_OPEN_KNEE_TUCKS ((FIT_CORE_EXERCISE_NAME)22) +#define FIT_CORE_EXERCISE_NAME_SIDE_ABS_LEG_LIFT ((FIT_CORE_EXERCISE_NAME)23) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SIDE_ABS_LEG_LIFT ((FIT_CORE_EXERCISE_NAME)24) +#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_JACKKNIFE ((FIT_CORE_EXERCISE_NAME)25) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_JACKKNIFE ((FIT_CORE_EXERCISE_NAME)26) +#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_PIKE ((FIT_CORE_EXERCISE_NAME)27) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PIKE ((FIT_CORE_EXERCISE_NAME)28) +#define FIT_CORE_EXERCISE_NAME_SWISS_BALL_ROLLOUT ((FIT_CORE_EXERCISE_NAME)29) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_SWISS_BALL_ROLLOUT ((FIT_CORE_EXERCISE_NAME)30) +#define FIT_CORE_EXERCISE_NAME_TRIANGLE_HIP_PRESS ((FIT_CORE_EXERCISE_NAME)31) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_TRIANGLE_HIP_PRESS ((FIT_CORE_EXERCISE_NAME)32) +#define FIT_CORE_EXERCISE_NAME_TRX_SUSPENDED_JACKKNIFE ((FIT_CORE_EXERCISE_NAME)33) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_TRX_SUSPENDED_JACKKNIFE ((FIT_CORE_EXERCISE_NAME)34) +#define FIT_CORE_EXERCISE_NAME_U_BOAT ((FIT_CORE_EXERCISE_NAME)35) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_U_BOAT ((FIT_CORE_EXERCISE_NAME)36) +#define FIT_CORE_EXERCISE_NAME_WINDMILL_SWITCHES ((FIT_CORE_EXERCISE_NAME)37) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_WINDMILL_SWITCHES ((FIT_CORE_EXERCISE_NAME)38) +#define FIT_CORE_EXERCISE_NAME_ALTERNATING_SLIDE_OUT ((FIT_CORE_EXERCISE_NAME)39) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_ALTERNATING_SLIDE_OUT ((FIT_CORE_EXERCISE_NAME)40) +#define FIT_CORE_EXERCISE_NAME_GHD_BACK_EXTENSIONS ((FIT_CORE_EXERCISE_NAME)41) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_GHD_BACK_EXTENSIONS ((FIT_CORE_EXERCISE_NAME)42) +#define FIT_CORE_EXERCISE_NAME_OVERHEAD_WALK ((FIT_CORE_EXERCISE_NAME)43) +#define FIT_CORE_EXERCISE_NAME_INCHWORM ((FIT_CORE_EXERCISE_NAME)44) +#define FIT_CORE_EXERCISE_NAME_WEIGHTED_MODIFIED_FRONT_LEVER ((FIT_CORE_EXERCISE_NAME)45) +#define FIT_CORE_EXERCISE_NAME_RUSSIAN_TWIST ((FIT_CORE_EXERCISE_NAME)46) #define FIT_CORE_EXERCISE_NAME_ABDOMINAL_LEG_ROTATIONS ((FIT_CORE_EXERCISE_NAME)47) // Deprecated do not use -#define FIT_CORE_EXERCISE_NAME_ARM_AND_LEG_EXTENSION_ON_KNEES ((FIT_CORE_EXERCISE_NAME)48) -#define FIT_CORE_EXERCISE_NAME_BICYCLE ((FIT_CORE_EXERCISE_NAME)49) -#define FIT_CORE_EXERCISE_NAME_BICEP_CURL_WITH_LEG_EXTENSION ((FIT_CORE_EXERCISE_NAME)50) -#define FIT_CORE_EXERCISE_NAME_CAT_COW ((FIT_CORE_EXERCISE_NAME)51) -#define FIT_CORE_EXERCISE_NAME_CORKSCREW ((FIT_CORE_EXERCISE_NAME)52) -#define FIT_CORE_EXERCISE_NAME_CRISS_CROSS ((FIT_CORE_EXERCISE_NAME)53) +#define FIT_CORE_EXERCISE_NAME_ARM_AND_LEG_EXTENSION_ON_KNEES ((FIT_CORE_EXERCISE_NAME)48) +#define FIT_CORE_EXERCISE_NAME_BICYCLE ((FIT_CORE_EXERCISE_NAME)49) +#define FIT_CORE_EXERCISE_NAME_BICEP_CURL_WITH_LEG_EXTENSION ((FIT_CORE_EXERCISE_NAME)50) +#define FIT_CORE_EXERCISE_NAME_CAT_COW ((FIT_CORE_EXERCISE_NAME)51) +#define FIT_CORE_EXERCISE_NAME_CORKSCREW ((FIT_CORE_EXERCISE_NAME)52) +#define FIT_CORE_EXERCISE_NAME_CRISS_CROSS ((FIT_CORE_EXERCISE_NAME)53) #define FIT_CORE_EXERCISE_NAME_CRISS_CROSS_WITH_BALL ((FIT_CORE_EXERCISE_NAME)54) // Deprecated do not use -#define FIT_CORE_EXERCISE_NAME_DOUBLE_LEG_STRETCH ((FIT_CORE_EXERCISE_NAME)55) -#define FIT_CORE_EXERCISE_NAME_KNEE_FOLDS ((FIT_CORE_EXERCISE_NAME)56) -#define FIT_CORE_EXERCISE_NAME_LOWER_LIFT ((FIT_CORE_EXERCISE_NAME)57) -#define FIT_CORE_EXERCISE_NAME_NECK_PULL ((FIT_CORE_EXERCISE_NAME)58) -#define FIT_CORE_EXERCISE_NAME_PELVIC_CLOCKS ((FIT_CORE_EXERCISE_NAME)59) -#define FIT_CORE_EXERCISE_NAME_ROLL_OVER ((FIT_CORE_EXERCISE_NAME)60) -#define FIT_CORE_EXERCISE_NAME_ROLL_UP ((FIT_CORE_EXERCISE_NAME)61) -#define FIT_CORE_EXERCISE_NAME_ROLLING ((FIT_CORE_EXERCISE_NAME)62) -#define FIT_CORE_EXERCISE_NAME_ROWING_1 ((FIT_CORE_EXERCISE_NAME)63) -#define FIT_CORE_EXERCISE_NAME_ROWING_2 ((FIT_CORE_EXERCISE_NAME)64) -#define FIT_CORE_EXERCISE_NAME_SCISSORS ((FIT_CORE_EXERCISE_NAME)65) -#define FIT_CORE_EXERCISE_NAME_SINGLE_LEG_CIRCLES ((FIT_CORE_EXERCISE_NAME)66) -#define FIT_CORE_EXERCISE_NAME_SINGLE_LEG_STRETCH ((FIT_CORE_EXERCISE_NAME)67) +#define FIT_CORE_EXERCISE_NAME_DOUBLE_LEG_STRETCH ((FIT_CORE_EXERCISE_NAME)55) +#define FIT_CORE_EXERCISE_NAME_KNEE_FOLDS ((FIT_CORE_EXERCISE_NAME)56) +#define FIT_CORE_EXERCISE_NAME_LOWER_LIFT ((FIT_CORE_EXERCISE_NAME)57) +#define FIT_CORE_EXERCISE_NAME_NECK_PULL ((FIT_CORE_EXERCISE_NAME)58) +#define FIT_CORE_EXERCISE_NAME_PELVIC_CLOCKS ((FIT_CORE_EXERCISE_NAME)59) +#define FIT_CORE_EXERCISE_NAME_ROLL_OVER ((FIT_CORE_EXERCISE_NAME)60) +#define FIT_CORE_EXERCISE_NAME_ROLL_UP ((FIT_CORE_EXERCISE_NAME)61) +#define FIT_CORE_EXERCISE_NAME_ROLLING ((FIT_CORE_EXERCISE_NAME)62) +#define FIT_CORE_EXERCISE_NAME_ROWING_1 ((FIT_CORE_EXERCISE_NAME)63) +#define FIT_CORE_EXERCISE_NAME_ROWING_2 ((FIT_CORE_EXERCISE_NAME)64) +#define FIT_CORE_EXERCISE_NAME_SCISSORS ((FIT_CORE_EXERCISE_NAME)65) +#define FIT_CORE_EXERCISE_NAME_SINGLE_LEG_CIRCLES ((FIT_CORE_EXERCISE_NAME)66) +#define FIT_CORE_EXERCISE_NAME_SINGLE_LEG_STRETCH ((FIT_CORE_EXERCISE_NAME)67) #define FIT_CORE_EXERCISE_NAME_SNAKE_TWIST_1_AND_2 ((FIT_CORE_EXERCISE_NAME)68) // Deprecated do not use -#define FIT_CORE_EXERCISE_NAME_SWAN ((FIT_CORE_EXERCISE_NAME)69) -#define FIT_CORE_EXERCISE_NAME_SWIMMING ((FIT_CORE_EXERCISE_NAME)70) -#define FIT_CORE_EXERCISE_NAME_TEASER ((FIT_CORE_EXERCISE_NAME)71) -#define FIT_CORE_EXERCISE_NAME_THE_HUNDRED ((FIT_CORE_EXERCISE_NAME)72) -#define FIT_CORE_EXERCISE_NAME_COUNT 73 - -typedef FIT_UINT16 FIT_CRUNCH_EXERCISE_NAME; -#define FIT_CRUNCH_EXERCISE_NAME_INVALID FIT_UINT16_INVALID -#define FIT_CRUNCH_EXERCISE_NAME_BICYCLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)0) -#define FIT_CRUNCH_EXERCISE_NAME_CABLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)1) -#define FIT_CRUNCH_EXERCISE_NAME_CIRCULAR_ARM_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)2) -#define FIT_CRUNCH_EXERCISE_NAME_CROSSED_ARMS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)3) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CROSSED_ARMS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)4) -#define FIT_CRUNCH_EXERCISE_NAME_CROSS_LEG_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)5) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CROSS_LEG_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)6) -#define FIT_CRUNCH_EXERCISE_NAME_CRUNCH_CHOP ((FIT_CRUNCH_EXERCISE_NAME)7) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CRUNCH_CHOP ((FIT_CRUNCH_EXERCISE_NAME)8) -#define FIT_CRUNCH_EXERCISE_NAME_DOUBLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)9) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_DOUBLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)10) -#define FIT_CRUNCH_EXERCISE_NAME_ELBOW_TO_KNEE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)11) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_ELBOW_TO_KNEE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)12) -#define FIT_CRUNCH_EXERCISE_NAME_FLUTTER_KICKS ((FIT_CRUNCH_EXERCISE_NAME)13) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_FLUTTER_KICKS ((FIT_CRUNCH_EXERCISE_NAME)14) -#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_ON_BENCH ((FIT_CRUNCH_EXERCISE_NAME)15) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_FOAM_ROLLER_REVERSE_CRUNCH_ON_BENCH ((FIT_CRUNCH_EXERCISE_NAME)16) -#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_WITH_DUMBBELL ((FIT_CRUNCH_EXERCISE_NAME)17) -#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_WITH_MEDICINE_BALL ((FIT_CRUNCH_EXERCISE_NAME)18) -#define FIT_CRUNCH_EXERCISE_NAME_FROG_PRESS ((FIT_CRUNCH_EXERCISE_NAME)19) -#define FIT_CRUNCH_EXERCISE_NAME_HANGING_KNEE_RAISE_OBLIQUE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)20) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HANGING_KNEE_RAISE_OBLIQUE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)21) -#define FIT_CRUNCH_EXERCISE_NAME_HIP_CROSSOVER ((FIT_CRUNCH_EXERCISE_NAME)22) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HIP_CROSSOVER ((FIT_CRUNCH_EXERCISE_NAME)23) -#define FIT_CRUNCH_EXERCISE_NAME_HOLLOW_ROCK ((FIT_CRUNCH_EXERCISE_NAME)24) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HOLLOW_ROCK ((FIT_CRUNCH_EXERCISE_NAME)25) -#define FIT_CRUNCH_EXERCISE_NAME_INCLINE_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)26) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_INCLINE_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)27) -#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_CABLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)28) -#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_CROSS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)29) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_KNEELING_CROSS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)30) -#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_OBLIQUE_CABLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)31) -#define FIT_CRUNCH_EXERCISE_NAME_KNEES_TO_ELBOW ((FIT_CRUNCH_EXERCISE_NAME)32) -#define FIT_CRUNCH_EXERCISE_NAME_LEG_EXTENSIONS ((FIT_CRUNCH_EXERCISE_NAME)33) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_LEG_EXTENSIONS ((FIT_CRUNCH_EXERCISE_NAME)34) -#define FIT_CRUNCH_EXERCISE_NAME_LEG_LEVERS ((FIT_CRUNCH_EXERCISE_NAME)35) -#define FIT_CRUNCH_EXERCISE_NAME_MCGILL_CURL_UP ((FIT_CRUNCH_EXERCISE_NAME)36) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_MCGILL_CURL_UP ((FIT_CRUNCH_EXERCISE_NAME)37) -#define FIT_CRUNCH_EXERCISE_NAME_MODIFIED_PILATES_ROLL_UP_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)38) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_MODIFIED_PILATES_ROLL_UP_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)39) -#define FIT_CRUNCH_EXERCISE_NAME_PILATES_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)40) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_PILATES_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)41) -#define FIT_CRUNCH_EXERCISE_NAME_PILATES_ROLL_UP_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)42) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_PILATES_ROLL_UP_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)43) -#define FIT_CRUNCH_EXERCISE_NAME_RAISED_LEGS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)44) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_RAISED_LEGS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)45) -#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)46) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)47) -#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CRUNCH_ON_A_BENCH ((FIT_CRUNCH_EXERCISE_NAME)48) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CRUNCH_ON_A_BENCH ((FIT_CRUNCH_EXERCISE_NAME)49) -#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CURL_AND_LIFT ((FIT_CRUNCH_EXERCISE_NAME)50) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CURL_AND_LIFT ((FIT_CRUNCH_EXERCISE_NAME)51) -#define FIT_CRUNCH_EXERCISE_NAME_ROTATIONAL_LIFT ((FIT_CRUNCH_EXERCISE_NAME)52) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_ROTATIONAL_LIFT ((FIT_CRUNCH_EXERCISE_NAME)53) -#define FIT_CRUNCH_EXERCISE_NAME_SEATED_ALTERNATING_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)54) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SEATED_ALTERNATING_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)55) -#define FIT_CRUNCH_EXERCISE_NAME_SEATED_LEG_U ((FIT_CRUNCH_EXERCISE_NAME)56) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SEATED_LEG_U ((FIT_CRUNCH_EXERCISE_NAME)57) -#define FIT_CRUNCH_EXERCISE_NAME_SIDE_TO_SIDE_CRUNCH_AND_WEAVE ((FIT_CRUNCH_EXERCISE_NAME)58) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_CRUNCH_AND_WEAVE ((FIT_CRUNCH_EXERCISE_NAME)59) -#define FIT_CRUNCH_EXERCISE_NAME_SINGLE_LEG_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)60) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)61) -#define FIT_CRUNCH_EXERCISE_NAME_SKATER_CRUNCH_CROSS ((FIT_CRUNCH_EXERCISE_NAME)62) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SKATER_CRUNCH_CROSS ((FIT_CRUNCH_EXERCISE_NAME)63) -#define FIT_CRUNCH_EXERCISE_NAME_STANDING_CABLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)64) -#define FIT_CRUNCH_EXERCISE_NAME_STANDING_SIDE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)65) -#define FIT_CRUNCH_EXERCISE_NAME_STEP_CLIMB ((FIT_CRUNCH_EXERCISE_NAME)66) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_STEP_CLIMB ((FIT_CRUNCH_EXERCISE_NAME)67) -#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)68) -#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)69) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)70) -#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_RUSSIAN_TWIST ((FIT_CRUNCH_EXERCISE_NAME)71) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_RUSSIAN_TWIST ((FIT_CRUNCH_EXERCISE_NAME)72) -#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_SIDE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)73) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_SIDE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)74) -#define FIT_CRUNCH_EXERCISE_NAME_THORACIC_CRUNCHES_ON_FOAM_ROLLER ((FIT_CRUNCH_EXERCISE_NAME)75) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_THORACIC_CRUNCHES_ON_FOAM_ROLLER ((FIT_CRUNCH_EXERCISE_NAME)76) -#define FIT_CRUNCH_EXERCISE_NAME_TRICEPS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)77) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_BICYCLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)78) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)79) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)80) -#define FIT_CRUNCH_EXERCISE_NAME_TOES_TO_BAR ((FIT_CRUNCH_EXERCISE_NAME)81) -#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_TOES_TO_BAR ((FIT_CRUNCH_EXERCISE_NAME)82) -#define FIT_CRUNCH_EXERCISE_NAME_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)83) -#define FIT_CRUNCH_EXERCISE_NAME_STRAIGHT_LEG_CRUNCH_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)84) -#define FIT_CRUNCH_EXERCISE_NAME_COUNT 85 - -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_CURL_EXERCISE_NAME)0) -#define FIT_CURL_EXERCISE_NAME_ALTERNATING_DUMBBELL_BICEPS_CURL_ON_SWISS_BALL ((FIT_CURL_EXERCISE_NAME)1) -#define FIT_CURL_EXERCISE_NAME_ALTERNATING_INCLINE_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)2) -#define FIT_CURL_EXERCISE_NAME_BARBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)3) -#define FIT_CURL_EXERCISE_NAME_BARBELL_REVERSE_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)4) -#define FIT_CURL_EXERCISE_NAME_BARBELL_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)5) -#define FIT_CURL_EXERCISE_NAME_BEHIND_THE_BACK_BARBELL_REVERSE_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)6) -#define FIT_CURL_EXERCISE_NAME_BEHIND_THE_BACK_ONE_ARM_CABLE_CURL ((FIT_CURL_EXERCISE_NAME)7) -#define FIT_CURL_EXERCISE_NAME_CABLE_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)8) -#define FIT_CURL_EXERCISE_NAME_CABLE_HAMMER_CURL ((FIT_CURL_EXERCISE_NAME)9) -#define FIT_CURL_EXERCISE_NAME_CHEATING_BARBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)10) -#define FIT_CURL_EXERCISE_NAME_CLOSE_GRIP_EZ_BAR_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)11) -#define FIT_CURL_EXERCISE_NAME_CROSS_BODY_DUMBBELL_HAMMER_CURL ((FIT_CURL_EXERCISE_NAME)12) -#define FIT_CURL_EXERCISE_NAME_DEAD_HANG_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)13) -#define FIT_CURL_EXERCISE_NAME_DECLINE_HAMMER_CURL ((FIT_CURL_EXERCISE_NAME)14) -#define FIT_CURL_EXERCISE_NAME_DUMBBELL_BICEPS_CURL_WITH_STATIC_HOLD ((FIT_CURL_EXERCISE_NAME)15) -#define FIT_CURL_EXERCISE_NAME_DUMBBELL_HAMMER_CURL ((FIT_CURL_EXERCISE_NAME)16) -#define FIT_CURL_EXERCISE_NAME_DUMBBELL_REVERSE_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)17) -#define FIT_CURL_EXERCISE_NAME_DUMBBELL_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)18) -#define FIT_CURL_EXERCISE_NAME_EZ_BAR_PREACHER_CURL ((FIT_CURL_EXERCISE_NAME)19) -#define FIT_CURL_EXERCISE_NAME_FORWARD_BEND_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)20) -#define FIT_CURL_EXERCISE_NAME_HAMMER_CURL_TO_PRESS ((FIT_CURL_EXERCISE_NAME)21) -#define FIT_CURL_EXERCISE_NAME_INCLINE_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)22) -#define FIT_CURL_EXERCISE_NAME_INCLINE_OFFSET_THUMB_DUMBBELL_CURL ((FIT_CURL_EXERCISE_NAME)23) -#define FIT_CURL_EXERCISE_NAME_KETTLEBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)24) -#define FIT_CURL_EXERCISE_NAME_LYING_CONCENTRATION_CABLE_CURL ((FIT_CURL_EXERCISE_NAME)25) -#define FIT_CURL_EXERCISE_NAME_ONE_ARM_PREACHER_CURL ((FIT_CURL_EXERCISE_NAME)26) -#define FIT_CURL_EXERCISE_NAME_PLATE_PINCH_CURL ((FIT_CURL_EXERCISE_NAME)27) -#define FIT_CURL_EXERCISE_NAME_PREACHER_CURL_WITH_CABLE ((FIT_CURL_EXERCISE_NAME)28) -#define FIT_CURL_EXERCISE_NAME_REVERSE_EZ_BAR_CURL ((FIT_CURL_EXERCISE_NAME)29) -#define FIT_CURL_EXERCISE_NAME_REVERSE_GRIP_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)30) -#define FIT_CURL_EXERCISE_NAME_REVERSE_GRIP_BARBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)31) -#define FIT_CURL_EXERCISE_NAME_SEATED_ALTERNATING_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)32) -#define FIT_CURL_EXERCISE_NAME_SEATED_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)33) -#define FIT_CURL_EXERCISE_NAME_SEATED_REVERSE_DUMBBELL_CURL ((FIT_CURL_EXERCISE_NAME)34) -#define FIT_CURL_EXERCISE_NAME_SPLIT_STANCE_OFFSET_PINKY_DUMBBELL_CURL ((FIT_CURL_EXERCISE_NAME)35) -#define FIT_CURL_EXERCISE_NAME_STANDING_ALTERNATING_DUMBBELL_CURLS ((FIT_CURL_EXERCISE_NAME)36) -#define FIT_CURL_EXERCISE_NAME_STANDING_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)37) -#define FIT_CURL_EXERCISE_NAME_STANDING_EZ_BAR_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)38) -#define FIT_CURL_EXERCISE_NAME_STATIC_CURL ((FIT_CURL_EXERCISE_NAME)39) -#define FIT_CURL_EXERCISE_NAME_SWISS_BALL_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION ((FIT_CURL_EXERCISE_NAME)40) -#define FIT_CURL_EXERCISE_NAME_SWISS_BALL_EZ_BAR_PREACHER_CURL ((FIT_CURL_EXERCISE_NAME)41) -#define FIT_CURL_EXERCISE_NAME_TWISTING_STANDING_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)42) -#define FIT_CURL_EXERCISE_NAME_WIDE_GRIP_EZ_BAR_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)43) -#define FIT_CURL_EXERCISE_NAME_COUNT 44 - -typedef FIT_UINT16 FIT_DEADLIFT_EXERCISE_NAME; -#define FIT_DEADLIFT_EXERCISE_NAME_INVALID FIT_UINT16_INVALID -#define FIT_DEADLIFT_EXERCISE_NAME_BARBELL_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)0) -#define FIT_DEADLIFT_EXERCISE_NAME_BARBELL_STRAIGHT_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)1) -#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)2) -#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_SINGLE_LEG_DEADLIFT_TO_ROW ((FIT_DEADLIFT_EXERCISE_NAME)3) -#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_STRAIGHT_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)4) -#define FIT_DEADLIFT_EXERCISE_NAME_KETTLEBELL_FLOOR_TO_SHELF ((FIT_DEADLIFT_EXERCISE_NAME)5) -#define FIT_DEADLIFT_EXERCISE_NAME_ONE_ARM_ONE_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)6) -#define FIT_DEADLIFT_EXERCISE_NAME_RACK_PULL ((FIT_DEADLIFT_EXERCISE_NAME)7) -#define FIT_DEADLIFT_EXERCISE_NAME_ROTATIONAL_DUMBBELL_STRAIGHT_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)8) -#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_ARM_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)9) -#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_BARBELL_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)10) -#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_BARBELL_STRAIGHT_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)11) -#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_DEADLIFT_WITH_BARBELL ((FIT_DEADLIFT_EXERCISE_NAME)12) -#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_RDL_CIRCUIT ((FIT_DEADLIFT_EXERCISE_NAME)13) -#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_ROMANIAN_DEADLIFT_WITH_DUMBBELL ((FIT_DEADLIFT_EXERCISE_NAME)14) -#define FIT_DEADLIFT_EXERCISE_NAME_SUMO_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)15) -#define FIT_DEADLIFT_EXERCISE_NAME_SUMO_DEADLIFT_HIGH_PULL ((FIT_DEADLIFT_EXERCISE_NAME)16) -#define FIT_DEADLIFT_EXERCISE_NAME_TRAP_BAR_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)17) -#define FIT_DEADLIFT_EXERCISE_NAME_WIDE_GRIP_BARBELL_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)18) -#define FIT_DEADLIFT_EXERCISE_NAME_COUNT 19 - -typedef FIT_UINT16 FIT_FLYE_EXERCISE_NAME; -#define FIT_FLYE_EXERCISE_NAME_INVALID FIT_UINT16_INVALID -#define FIT_FLYE_EXERCISE_NAME_CABLE_CROSSOVER ((FIT_FLYE_EXERCISE_NAME)0) -#define FIT_FLYE_EXERCISE_NAME_DECLINE_DUMBBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)1) -#define FIT_FLYE_EXERCISE_NAME_DUMBBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)2) -#define FIT_FLYE_EXERCISE_NAME_INCLINE_DUMBBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)3) -#define FIT_FLYE_EXERCISE_NAME_KETTLEBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)4) -#define FIT_FLYE_EXERCISE_NAME_KNEELING_REAR_FLYE ((FIT_FLYE_EXERCISE_NAME)5) -#define FIT_FLYE_EXERCISE_NAME_SINGLE_ARM_STANDING_CABLE_REVERSE_FLYE ((FIT_FLYE_EXERCISE_NAME)6) -#define FIT_FLYE_EXERCISE_NAME_SWISS_BALL_DUMBBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)7) -#define FIT_FLYE_EXERCISE_NAME_ARM_ROTATIONS ((FIT_FLYE_EXERCISE_NAME)8) -#define FIT_FLYE_EXERCISE_NAME_HUG_A_TREE ((FIT_FLYE_EXERCISE_NAME)9) -#define FIT_FLYE_EXERCISE_NAME_COUNT 10 - -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_HIP_RAISE_EXERCISE_NAME)0) -#define FIT_HIP_RAISE_EXERCISE_NAME_BARBELL_HIP_THRUST_WITH_BENCH ((FIT_HIP_RAISE_EXERCISE_NAME)1) -#define FIT_HIP_RAISE_EXERCISE_NAME_BENT_KNEE_SWISS_BALL_REVERSE_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)2) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_BENT_KNEE_SWISS_BALL_REVERSE_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)3) -#define FIT_HIP_RAISE_EXERCISE_NAME_BRIDGE_WITH_LEG_EXTENSION ((FIT_HIP_RAISE_EXERCISE_NAME)4) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_BRIDGE_WITH_LEG_EXTENSION ((FIT_HIP_RAISE_EXERCISE_NAME)5) -#define FIT_HIP_RAISE_EXERCISE_NAME_CLAM_BRIDGE ((FIT_HIP_RAISE_EXERCISE_NAME)6) -#define FIT_HIP_RAISE_EXERCISE_NAME_FRONT_KICK_TABLETOP ((FIT_HIP_RAISE_EXERCISE_NAME)7) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_FRONT_KICK_TABLETOP ((FIT_HIP_RAISE_EXERCISE_NAME)8) -#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_EXTENSION_AND_CROSS ((FIT_HIP_RAISE_EXERCISE_NAME)9) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_EXTENSION_AND_CROSS ((FIT_HIP_RAISE_EXERCISE_NAME)10) -#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)11) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)12) -#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_FEET_ON_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)13) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_FEET_ON_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)14) -#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)15) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)16) -#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_HEAD_ON_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)17) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_HEAD_ON_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)18) -#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_KNEE_SQUEEZE ((FIT_HIP_RAISE_EXERCISE_NAME)19) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_KNEE_SQUEEZE ((FIT_HIP_RAISE_EXERCISE_NAME)20) -#define FIT_HIP_RAISE_EXERCISE_NAME_INCLINE_REAR_LEG_EXTENSION ((FIT_HIP_RAISE_EXERCISE_NAME)21) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_INCLINE_REAR_LEG_EXTENSION ((FIT_HIP_RAISE_EXERCISE_NAME)22) -#define FIT_HIP_RAISE_EXERCISE_NAME_KETTLEBELL_SWING ((FIT_HIP_RAISE_EXERCISE_NAME)23) -#define FIT_HIP_RAISE_EXERCISE_NAME_MARCHING_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)24) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_MARCHING_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)25) -#define FIT_HIP_RAISE_EXERCISE_NAME_MARCHING_HIP_RAISE_WITH_FEET_ON_A_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)26) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_MARCHING_HIP_RAISE_WITH_FEET_ON_A_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)27) -#define FIT_HIP_RAISE_EXERCISE_NAME_REVERSE_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)28) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)29) -#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)30) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)31) -#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BENCH ((FIT_HIP_RAISE_EXERCISE_NAME)32) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BENCH ((FIT_HIP_RAISE_EXERCISE_NAME)33) -#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)34) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)35) -#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_FOAM_ROLLER ((FIT_HIP_RAISE_EXERCISE_NAME)36) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_FOAM_ROLLER ((FIT_HIP_RAISE_EXERCISE_NAME)37) -#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_MEDICINE_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)38) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_MEDICINE_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)39) -#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)40) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)41) -#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_CLAM_BRIDGE ((FIT_HIP_RAISE_EXERCISE_NAME)42) -#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_SWISS_BALL_HIP_RAISE_AND_LEG_CURL ((FIT_HIP_RAISE_EXERCISE_NAME)43) -#define FIT_HIP_RAISE_EXERCISE_NAME_CLAMS ((FIT_HIP_RAISE_EXERCISE_NAME)44) +#define FIT_CORE_EXERCISE_NAME_SWAN ((FIT_CORE_EXERCISE_NAME)69) +#define FIT_CORE_EXERCISE_NAME_SWIMMING ((FIT_CORE_EXERCISE_NAME)70) +#define FIT_CORE_EXERCISE_NAME_TEASER ((FIT_CORE_EXERCISE_NAME)71) +#define FIT_CORE_EXERCISE_NAME_THE_HUNDRED ((FIT_CORE_EXERCISE_NAME)72) +#define FIT_CORE_EXERCISE_NAME_COUNT 73 + +typedef FIT_UINT16 FIT_CRUNCH_EXERCISE_NAME; +#define FIT_CRUNCH_EXERCISE_NAME_INVALID FIT_UINT16_INVALID +#define FIT_CRUNCH_EXERCISE_NAME_BICYCLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)0) +#define FIT_CRUNCH_EXERCISE_NAME_CABLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)1) +#define FIT_CRUNCH_EXERCISE_NAME_CIRCULAR_ARM_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)2) +#define FIT_CRUNCH_EXERCISE_NAME_CROSSED_ARMS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)3) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CROSSED_ARMS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)4) +#define FIT_CRUNCH_EXERCISE_NAME_CROSS_LEG_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)5) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CROSS_LEG_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)6) +#define FIT_CRUNCH_EXERCISE_NAME_CRUNCH_CHOP ((FIT_CRUNCH_EXERCISE_NAME)7) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CRUNCH_CHOP ((FIT_CRUNCH_EXERCISE_NAME)8) +#define FIT_CRUNCH_EXERCISE_NAME_DOUBLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)9) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_DOUBLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)10) +#define FIT_CRUNCH_EXERCISE_NAME_ELBOW_TO_KNEE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)11) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_ELBOW_TO_KNEE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)12) +#define FIT_CRUNCH_EXERCISE_NAME_FLUTTER_KICKS ((FIT_CRUNCH_EXERCISE_NAME)13) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_FLUTTER_KICKS ((FIT_CRUNCH_EXERCISE_NAME)14) +#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_ON_BENCH ((FIT_CRUNCH_EXERCISE_NAME)15) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_FOAM_ROLLER_REVERSE_CRUNCH_ON_BENCH ((FIT_CRUNCH_EXERCISE_NAME)16) +#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_WITH_DUMBBELL ((FIT_CRUNCH_EXERCISE_NAME)17) +#define FIT_CRUNCH_EXERCISE_NAME_FOAM_ROLLER_REVERSE_CRUNCH_WITH_MEDICINE_BALL ((FIT_CRUNCH_EXERCISE_NAME)18) +#define FIT_CRUNCH_EXERCISE_NAME_FROG_PRESS ((FIT_CRUNCH_EXERCISE_NAME)19) +#define FIT_CRUNCH_EXERCISE_NAME_HANGING_KNEE_RAISE_OBLIQUE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)20) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HANGING_KNEE_RAISE_OBLIQUE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)21) +#define FIT_CRUNCH_EXERCISE_NAME_HIP_CROSSOVER ((FIT_CRUNCH_EXERCISE_NAME)22) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HIP_CROSSOVER ((FIT_CRUNCH_EXERCISE_NAME)23) +#define FIT_CRUNCH_EXERCISE_NAME_HOLLOW_ROCK ((FIT_CRUNCH_EXERCISE_NAME)24) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_HOLLOW_ROCK ((FIT_CRUNCH_EXERCISE_NAME)25) +#define FIT_CRUNCH_EXERCISE_NAME_INCLINE_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)26) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_INCLINE_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)27) +#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_CABLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)28) +#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_CROSS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)29) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_KNEELING_CROSS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)30) +#define FIT_CRUNCH_EXERCISE_NAME_KNEELING_OBLIQUE_CABLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)31) +#define FIT_CRUNCH_EXERCISE_NAME_KNEES_TO_ELBOW ((FIT_CRUNCH_EXERCISE_NAME)32) +#define FIT_CRUNCH_EXERCISE_NAME_LEG_EXTENSIONS ((FIT_CRUNCH_EXERCISE_NAME)33) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_LEG_EXTENSIONS ((FIT_CRUNCH_EXERCISE_NAME)34) +#define FIT_CRUNCH_EXERCISE_NAME_LEG_LEVERS ((FIT_CRUNCH_EXERCISE_NAME)35) +#define FIT_CRUNCH_EXERCISE_NAME_MCGILL_CURL_UP ((FIT_CRUNCH_EXERCISE_NAME)36) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_MCGILL_CURL_UP ((FIT_CRUNCH_EXERCISE_NAME)37) +#define FIT_CRUNCH_EXERCISE_NAME_MODIFIED_PILATES_ROLL_UP_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)38) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_MODIFIED_PILATES_ROLL_UP_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)39) +#define FIT_CRUNCH_EXERCISE_NAME_PILATES_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)40) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_PILATES_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)41) +#define FIT_CRUNCH_EXERCISE_NAME_PILATES_ROLL_UP_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)42) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_PILATES_ROLL_UP_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)43) +#define FIT_CRUNCH_EXERCISE_NAME_RAISED_LEGS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)44) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_RAISED_LEGS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)45) +#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)46) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)47) +#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CRUNCH_ON_A_BENCH ((FIT_CRUNCH_EXERCISE_NAME)48) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CRUNCH_ON_A_BENCH ((FIT_CRUNCH_EXERCISE_NAME)49) +#define FIT_CRUNCH_EXERCISE_NAME_REVERSE_CURL_AND_LIFT ((FIT_CRUNCH_EXERCISE_NAME)50) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_REVERSE_CURL_AND_LIFT ((FIT_CRUNCH_EXERCISE_NAME)51) +#define FIT_CRUNCH_EXERCISE_NAME_ROTATIONAL_LIFT ((FIT_CRUNCH_EXERCISE_NAME)52) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_ROTATIONAL_LIFT ((FIT_CRUNCH_EXERCISE_NAME)53) +#define FIT_CRUNCH_EXERCISE_NAME_SEATED_ALTERNATING_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)54) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SEATED_ALTERNATING_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)55) +#define FIT_CRUNCH_EXERCISE_NAME_SEATED_LEG_U ((FIT_CRUNCH_EXERCISE_NAME)56) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SEATED_LEG_U ((FIT_CRUNCH_EXERCISE_NAME)57) +#define FIT_CRUNCH_EXERCISE_NAME_SIDE_TO_SIDE_CRUNCH_AND_WEAVE ((FIT_CRUNCH_EXERCISE_NAME)58) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_CRUNCH_AND_WEAVE ((FIT_CRUNCH_EXERCISE_NAME)59) +#define FIT_CRUNCH_EXERCISE_NAME_SINGLE_LEG_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)60) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)61) +#define FIT_CRUNCH_EXERCISE_NAME_SKATER_CRUNCH_CROSS ((FIT_CRUNCH_EXERCISE_NAME)62) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SKATER_CRUNCH_CROSS ((FIT_CRUNCH_EXERCISE_NAME)63) +#define FIT_CRUNCH_EXERCISE_NAME_STANDING_CABLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)64) +#define FIT_CRUNCH_EXERCISE_NAME_STANDING_SIDE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)65) +#define FIT_CRUNCH_EXERCISE_NAME_STEP_CLIMB ((FIT_CRUNCH_EXERCISE_NAME)66) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_STEP_CLIMB ((FIT_CRUNCH_EXERCISE_NAME)67) +#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)68) +#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)69) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_REVERSE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)70) +#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_RUSSIAN_TWIST ((FIT_CRUNCH_EXERCISE_NAME)71) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_RUSSIAN_TWIST ((FIT_CRUNCH_EXERCISE_NAME)72) +#define FIT_CRUNCH_EXERCISE_NAME_SWISS_BALL_SIDE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)73) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_SIDE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)74) +#define FIT_CRUNCH_EXERCISE_NAME_THORACIC_CRUNCHES_ON_FOAM_ROLLER ((FIT_CRUNCH_EXERCISE_NAME)75) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_THORACIC_CRUNCHES_ON_FOAM_ROLLER ((FIT_CRUNCH_EXERCISE_NAME)76) +#define FIT_CRUNCH_EXERCISE_NAME_TRICEPS_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)77) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_BICYCLE_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)78) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)79) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_SWISS_BALL_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)80) +#define FIT_CRUNCH_EXERCISE_NAME_TOES_TO_BAR ((FIT_CRUNCH_EXERCISE_NAME)81) +#define FIT_CRUNCH_EXERCISE_NAME_WEIGHTED_TOES_TO_BAR ((FIT_CRUNCH_EXERCISE_NAME)82) +#define FIT_CRUNCH_EXERCISE_NAME_CRUNCH ((FIT_CRUNCH_EXERCISE_NAME)83) +#define FIT_CRUNCH_EXERCISE_NAME_STRAIGHT_LEG_CRUNCH_WITH_BALL ((FIT_CRUNCH_EXERCISE_NAME)84) +#define FIT_CRUNCH_EXERCISE_NAME_COUNT 85 + +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_CURL_EXERCISE_NAME)0) +#define FIT_CURL_EXERCISE_NAME_ALTERNATING_DUMBBELL_BICEPS_CURL_ON_SWISS_BALL ((FIT_CURL_EXERCISE_NAME)1) +#define FIT_CURL_EXERCISE_NAME_ALTERNATING_INCLINE_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)2) +#define FIT_CURL_EXERCISE_NAME_BARBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)3) +#define FIT_CURL_EXERCISE_NAME_BARBELL_REVERSE_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)4) +#define FIT_CURL_EXERCISE_NAME_BARBELL_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)5) +#define FIT_CURL_EXERCISE_NAME_BEHIND_THE_BACK_BARBELL_REVERSE_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)6) +#define FIT_CURL_EXERCISE_NAME_BEHIND_THE_BACK_ONE_ARM_CABLE_CURL ((FIT_CURL_EXERCISE_NAME)7) +#define FIT_CURL_EXERCISE_NAME_CABLE_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)8) +#define FIT_CURL_EXERCISE_NAME_CABLE_HAMMER_CURL ((FIT_CURL_EXERCISE_NAME)9) +#define FIT_CURL_EXERCISE_NAME_CHEATING_BARBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)10) +#define FIT_CURL_EXERCISE_NAME_CLOSE_GRIP_EZ_BAR_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)11) +#define FIT_CURL_EXERCISE_NAME_CROSS_BODY_DUMBBELL_HAMMER_CURL ((FIT_CURL_EXERCISE_NAME)12) +#define FIT_CURL_EXERCISE_NAME_DEAD_HANG_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)13) +#define FIT_CURL_EXERCISE_NAME_DECLINE_HAMMER_CURL ((FIT_CURL_EXERCISE_NAME)14) +#define FIT_CURL_EXERCISE_NAME_DUMBBELL_BICEPS_CURL_WITH_STATIC_HOLD ((FIT_CURL_EXERCISE_NAME)15) +#define FIT_CURL_EXERCISE_NAME_DUMBBELL_HAMMER_CURL ((FIT_CURL_EXERCISE_NAME)16) +#define FIT_CURL_EXERCISE_NAME_DUMBBELL_REVERSE_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)17) +#define FIT_CURL_EXERCISE_NAME_DUMBBELL_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)18) +#define FIT_CURL_EXERCISE_NAME_EZ_BAR_PREACHER_CURL ((FIT_CURL_EXERCISE_NAME)19) +#define FIT_CURL_EXERCISE_NAME_FORWARD_BEND_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)20) +#define FIT_CURL_EXERCISE_NAME_HAMMER_CURL_TO_PRESS ((FIT_CURL_EXERCISE_NAME)21) +#define FIT_CURL_EXERCISE_NAME_INCLINE_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)22) +#define FIT_CURL_EXERCISE_NAME_INCLINE_OFFSET_THUMB_DUMBBELL_CURL ((FIT_CURL_EXERCISE_NAME)23) +#define FIT_CURL_EXERCISE_NAME_KETTLEBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)24) +#define FIT_CURL_EXERCISE_NAME_LYING_CONCENTRATION_CABLE_CURL ((FIT_CURL_EXERCISE_NAME)25) +#define FIT_CURL_EXERCISE_NAME_ONE_ARM_PREACHER_CURL ((FIT_CURL_EXERCISE_NAME)26) +#define FIT_CURL_EXERCISE_NAME_PLATE_PINCH_CURL ((FIT_CURL_EXERCISE_NAME)27) +#define FIT_CURL_EXERCISE_NAME_PREACHER_CURL_WITH_CABLE ((FIT_CURL_EXERCISE_NAME)28) +#define FIT_CURL_EXERCISE_NAME_REVERSE_EZ_BAR_CURL ((FIT_CURL_EXERCISE_NAME)29) +#define FIT_CURL_EXERCISE_NAME_REVERSE_GRIP_WRIST_CURL ((FIT_CURL_EXERCISE_NAME)30) +#define FIT_CURL_EXERCISE_NAME_REVERSE_GRIP_BARBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)31) +#define FIT_CURL_EXERCISE_NAME_SEATED_ALTERNATING_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)32) +#define FIT_CURL_EXERCISE_NAME_SEATED_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)33) +#define FIT_CURL_EXERCISE_NAME_SEATED_REVERSE_DUMBBELL_CURL ((FIT_CURL_EXERCISE_NAME)34) +#define FIT_CURL_EXERCISE_NAME_SPLIT_STANCE_OFFSET_PINKY_DUMBBELL_CURL ((FIT_CURL_EXERCISE_NAME)35) +#define FIT_CURL_EXERCISE_NAME_STANDING_ALTERNATING_DUMBBELL_CURLS ((FIT_CURL_EXERCISE_NAME)36) +#define FIT_CURL_EXERCISE_NAME_STANDING_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)37) +#define FIT_CURL_EXERCISE_NAME_STANDING_EZ_BAR_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)38) +#define FIT_CURL_EXERCISE_NAME_STATIC_CURL ((FIT_CURL_EXERCISE_NAME)39) +#define FIT_CURL_EXERCISE_NAME_SWISS_BALL_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION ((FIT_CURL_EXERCISE_NAME)40) +#define FIT_CURL_EXERCISE_NAME_SWISS_BALL_EZ_BAR_PREACHER_CURL ((FIT_CURL_EXERCISE_NAME)41) +#define FIT_CURL_EXERCISE_NAME_TWISTING_STANDING_DUMBBELL_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)42) +#define FIT_CURL_EXERCISE_NAME_WIDE_GRIP_EZ_BAR_BICEPS_CURL ((FIT_CURL_EXERCISE_NAME)43) +#define FIT_CURL_EXERCISE_NAME_COUNT 44 + +typedef FIT_UINT16 FIT_DEADLIFT_EXERCISE_NAME; +#define FIT_DEADLIFT_EXERCISE_NAME_INVALID FIT_UINT16_INVALID +#define FIT_DEADLIFT_EXERCISE_NAME_BARBELL_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)0) +#define FIT_DEADLIFT_EXERCISE_NAME_BARBELL_STRAIGHT_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)1) +#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)2) +#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_SINGLE_LEG_DEADLIFT_TO_ROW ((FIT_DEADLIFT_EXERCISE_NAME)3) +#define FIT_DEADLIFT_EXERCISE_NAME_DUMBBELL_STRAIGHT_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)4) +#define FIT_DEADLIFT_EXERCISE_NAME_KETTLEBELL_FLOOR_TO_SHELF ((FIT_DEADLIFT_EXERCISE_NAME)5) +#define FIT_DEADLIFT_EXERCISE_NAME_ONE_ARM_ONE_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)6) +#define FIT_DEADLIFT_EXERCISE_NAME_RACK_PULL ((FIT_DEADLIFT_EXERCISE_NAME)7) +#define FIT_DEADLIFT_EXERCISE_NAME_ROTATIONAL_DUMBBELL_STRAIGHT_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)8) +#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_ARM_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)9) +#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_BARBELL_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)10) +#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_BARBELL_STRAIGHT_LEG_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)11) +#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_DEADLIFT_WITH_BARBELL ((FIT_DEADLIFT_EXERCISE_NAME)12) +#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_RDL_CIRCUIT ((FIT_DEADLIFT_EXERCISE_NAME)13) +#define FIT_DEADLIFT_EXERCISE_NAME_SINGLE_LEG_ROMANIAN_DEADLIFT_WITH_DUMBBELL ((FIT_DEADLIFT_EXERCISE_NAME)14) +#define FIT_DEADLIFT_EXERCISE_NAME_SUMO_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)15) +#define FIT_DEADLIFT_EXERCISE_NAME_SUMO_DEADLIFT_HIGH_PULL ((FIT_DEADLIFT_EXERCISE_NAME)16) +#define FIT_DEADLIFT_EXERCISE_NAME_TRAP_BAR_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)17) +#define FIT_DEADLIFT_EXERCISE_NAME_WIDE_GRIP_BARBELL_DEADLIFT ((FIT_DEADLIFT_EXERCISE_NAME)18) +#define FIT_DEADLIFT_EXERCISE_NAME_COUNT 19 + +typedef FIT_UINT16 FIT_FLYE_EXERCISE_NAME; +#define FIT_FLYE_EXERCISE_NAME_INVALID FIT_UINT16_INVALID +#define FIT_FLYE_EXERCISE_NAME_CABLE_CROSSOVER ((FIT_FLYE_EXERCISE_NAME)0) +#define FIT_FLYE_EXERCISE_NAME_DECLINE_DUMBBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)1) +#define FIT_FLYE_EXERCISE_NAME_DUMBBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)2) +#define FIT_FLYE_EXERCISE_NAME_INCLINE_DUMBBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)3) +#define FIT_FLYE_EXERCISE_NAME_KETTLEBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)4) +#define FIT_FLYE_EXERCISE_NAME_KNEELING_REAR_FLYE ((FIT_FLYE_EXERCISE_NAME)5) +#define FIT_FLYE_EXERCISE_NAME_SINGLE_ARM_STANDING_CABLE_REVERSE_FLYE ((FIT_FLYE_EXERCISE_NAME)6) +#define FIT_FLYE_EXERCISE_NAME_SWISS_BALL_DUMBBELL_FLYE ((FIT_FLYE_EXERCISE_NAME)7) +#define FIT_FLYE_EXERCISE_NAME_ARM_ROTATIONS ((FIT_FLYE_EXERCISE_NAME)8) +#define FIT_FLYE_EXERCISE_NAME_HUG_A_TREE ((FIT_FLYE_EXERCISE_NAME)9) +#define FIT_FLYE_EXERCISE_NAME_COUNT 10 + +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_HIP_RAISE_EXERCISE_NAME)0) +#define FIT_HIP_RAISE_EXERCISE_NAME_BARBELL_HIP_THRUST_WITH_BENCH ((FIT_HIP_RAISE_EXERCISE_NAME)1) +#define FIT_HIP_RAISE_EXERCISE_NAME_BENT_KNEE_SWISS_BALL_REVERSE_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)2) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_BENT_KNEE_SWISS_BALL_REVERSE_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)3) +#define FIT_HIP_RAISE_EXERCISE_NAME_BRIDGE_WITH_LEG_EXTENSION ((FIT_HIP_RAISE_EXERCISE_NAME)4) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_BRIDGE_WITH_LEG_EXTENSION ((FIT_HIP_RAISE_EXERCISE_NAME)5) +#define FIT_HIP_RAISE_EXERCISE_NAME_CLAM_BRIDGE ((FIT_HIP_RAISE_EXERCISE_NAME)6) +#define FIT_HIP_RAISE_EXERCISE_NAME_FRONT_KICK_TABLETOP ((FIT_HIP_RAISE_EXERCISE_NAME)7) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_FRONT_KICK_TABLETOP ((FIT_HIP_RAISE_EXERCISE_NAME)8) +#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_EXTENSION_AND_CROSS ((FIT_HIP_RAISE_EXERCISE_NAME)9) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_EXTENSION_AND_CROSS ((FIT_HIP_RAISE_EXERCISE_NAME)10) +#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)11) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)12) +#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_FEET_ON_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)13) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_FEET_ON_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)14) +#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)15) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)16) +#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_HEAD_ON_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)17) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_HEAD_ON_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)18) +#define FIT_HIP_RAISE_EXERCISE_NAME_HIP_RAISE_WITH_KNEE_SQUEEZE ((FIT_HIP_RAISE_EXERCISE_NAME)19) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_HIP_RAISE_WITH_KNEE_SQUEEZE ((FIT_HIP_RAISE_EXERCISE_NAME)20) +#define FIT_HIP_RAISE_EXERCISE_NAME_INCLINE_REAR_LEG_EXTENSION ((FIT_HIP_RAISE_EXERCISE_NAME)21) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_INCLINE_REAR_LEG_EXTENSION ((FIT_HIP_RAISE_EXERCISE_NAME)22) +#define FIT_HIP_RAISE_EXERCISE_NAME_KETTLEBELL_SWING ((FIT_HIP_RAISE_EXERCISE_NAME)23) +#define FIT_HIP_RAISE_EXERCISE_NAME_MARCHING_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)24) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_MARCHING_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)25) +#define FIT_HIP_RAISE_EXERCISE_NAME_MARCHING_HIP_RAISE_WITH_FEET_ON_A_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)26) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_MARCHING_HIP_RAISE_WITH_FEET_ON_A_SWISS_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)27) +#define FIT_HIP_RAISE_EXERCISE_NAME_REVERSE_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)28) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)29) +#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)30) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE ((FIT_HIP_RAISE_EXERCISE_NAME)31) +#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BENCH ((FIT_HIP_RAISE_EXERCISE_NAME)32) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BENCH ((FIT_HIP_RAISE_EXERCISE_NAME)33) +#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)34) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)35) +#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_FOAM_ROLLER ((FIT_HIP_RAISE_EXERCISE_NAME)36) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_FOAM_ROLLER ((FIT_HIP_RAISE_EXERCISE_NAME)37) +#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_MEDICINE_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)38) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_FOOT_ON_MEDICINE_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)39) +#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)40) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_HIP_RAISE_WITH_HEAD_ON_BOSU_BALL ((FIT_HIP_RAISE_EXERCISE_NAME)41) +#define FIT_HIP_RAISE_EXERCISE_NAME_WEIGHTED_CLAM_BRIDGE ((FIT_HIP_RAISE_EXERCISE_NAME)42) +#define FIT_HIP_RAISE_EXERCISE_NAME_SINGLE_LEG_SWISS_BALL_HIP_RAISE_AND_LEG_CURL ((FIT_HIP_RAISE_EXERCISE_NAME)43) +#define FIT_HIP_RAISE_EXERCISE_NAME_CLAMS ((FIT_HIP_RAISE_EXERCISE_NAME)44) #define FIT_HIP_RAISE_EXERCISE_NAME_INNER_THIGH_CIRCLES ((FIT_HIP_RAISE_EXERCISE_NAME)45) // Deprecated do not use #define FIT_HIP_RAISE_EXERCISE_NAME_INNER_THIGH_SIDE_LIFT ((FIT_HIP_RAISE_EXERCISE_NAME)46) // Deprecated do not use -#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_CIRCLES ((FIT_HIP_RAISE_EXERCISE_NAME)47) -#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_LIFT ((FIT_HIP_RAISE_EXERCISE_NAME)48) -#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_LIFT_IN_EXTERNAL_ROTATION ((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_HIP_STABILITY_EXERCISE_NAME)0) -#define FIT_HIP_STABILITY_EXERCISE_NAME_DEAD_BUG ((FIT_HIP_STABILITY_EXERCISE_NAME)1) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_DEAD_BUG ((FIT_HIP_STABILITY_EXERCISE_NAME)2) -#define FIT_HIP_STABILITY_EXERCISE_NAME_EXTERNAL_HIP_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)3) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_EXTERNAL_HIP_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)4) -#define FIT_HIP_STABILITY_EXERCISE_NAME_FIRE_HYDRANT_KICKS ((FIT_HIP_STABILITY_EXERCISE_NAME)5) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_FIRE_HYDRANT_KICKS ((FIT_HIP_STABILITY_EXERCISE_NAME)6) -#define FIT_HIP_STABILITY_EXERCISE_NAME_HIP_CIRCLES ((FIT_HIP_STABILITY_EXERCISE_NAME)7) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_HIP_CIRCLES ((FIT_HIP_STABILITY_EXERCISE_NAME)8) -#define FIT_HIP_STABILITY_EXERCISE_NAME_INNER_THIGH_LIFT ((FIT_HIP_STABILITY_EXERCISE_NAME)9) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_INNER_THIGH_LIFT ((FIT_HIP_STABILITY_EXERCISE_NAME)10) -#define FIT_HIP_STABILITY_EXERCISE_NAME_LATERAL_WALKS_WITH_BAND_AT_ANKLES ((FIT_HIP_STABILITY_EXERCISE_NAME)11) -#define FIT_HIP_STABILITY_EXERCISE_NAME_PRETZEL_SIDE_KICK ((FIT_HIP_STABILITY_EXERCISE_NAME)12) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_PRETZEL_SIDE_KICK ((FIT_HIP_STABILITY_EXERCISE_NAME)13) -#define FIT_HIP_STABILITY_EXERCISE_NAME_PRONE_HIP_INTERNAL_ROTATION ((FIT_HIP_STABILITY_EXERCISE_NAME)14) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_PRONE_HIP_INTERNAL_ROTATION ((FIT_HIP_STABILITY_EXERCISE_NAME)15) -#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED ((FIT_HIP_STABILITY_EXERCISE_NAME)16) -#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED_HIP_EXTENSION ((FIT_HIP_STABILITY_EXERCISE_NAME)17) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_QUADRUPED_HIP_EXTENSION ((FIT_HIP_STABILITY_EXERCISE_NAME)18) -#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED_WITH_LEG_LIFT ((FIT_HIP_STABILITY_EXERCISE_NAME)19) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_QUADRUPED_WITH_LEG_LIFT ((FIT_HIP_STABILITY_EXERCISE_NAME)20) -#define FIT_HIP_STABILITY_EXERCISE_NAME_SIDE_LYING_LEG_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)21) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SIDE_LYING_LEG_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)22) -#define FIT_HIP_STABILITY_EXERCISE_NAME_SLIDING_HIP_ADDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)23) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SLIDING_HIP_ADDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)24) -#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_ADDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)25) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_ADDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)26) -#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_CABLE_HIP_ABDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)27) -#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_HIP_ABDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)28) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_HIP_ABDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)29) -#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_REAR_LEG_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)30) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_REAR_LEG_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)31) -#define FIT_HIP_STABILITY_EXERCISE_NAME_SUPINE_HIP_INTERNAL_ROTATION ((FIT_HIP_STABILITY_EXERCISE_NAME)32) -#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SUPINE_HIP_INTERNAL_ROTATION ((FIT_HIP_STABILITY_EXERCISE_NAME)33) -#define FIT_HIP_STABILITY_EXERCISE_NAME_COUNT 34 - -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_HIP_SWING_EXERCISE_NAME)0) -#define FIT_HIP_SWING_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SWING ((FIT_HIP_SWING_EXERCISE_NAME)1) -#define FIT_HIP_SWING_EXERCISE_NAME_STEP_OUT_SWING ((FIT_HIP_SWING_EXERCISE_NAME)2) -#define FIT_HIP_SWING_EXERCISE_NAME_COUNT 3 - -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_HYPEREXTENSION_EXERCISE_NAME)0) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BACK_EXTENSION_WITH_OPPOSITE_ARM_AND_LEG_REACH ((FIT_HYPEREXTENSION_EXERCISE_NAME)1) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_BASE_ROTATIONS ((FIT_HYPEREXTENSION_EXERCISE_NAME)2) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BASE_ROTATIONS ((FIT_HYPEREXTENSION_EXERCISE_NAME)3) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_BENT_KNEE_REVERSE_HYPEREXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)4) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BENT_KNEE_REVERSE_HYPEREXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)5) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_HOLLOW_HOLD_AND_ROLL ((FIT_HYPEREXTENSION_EXERCISE_NAME)6) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_HOLLOW_HOLD_AND_ROLL ((FIT_HYPEREXTENSION_EXERCISE_NAME)7) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_KICKS ((FIT_HYPEREXTENSION_EXERCISE_NAME)8) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KICKS ((FIT_HYPEREXTENSION_EXERCISE_NAME)9) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_KNEE_RAISES ((FIT_HYPEREXTENSION_EXERCISE_NAME)10) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KNEE_RAISES ((FIT_HYPEREXTENSION_EXERCISE_NAME)11) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_KNEELING_SUPERMAN ((FIT_HYPEREXTENSION_EXERCISE_NAME)12) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KNEELING_SUPERMAN ((FIT_HYPEREXTENSION_EXERCISE_NAME)13) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_LAT_PULL_DOWN_WITH_ROW ((FIT_HYPEREXTENSION_EXERCISE_NAME)14) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_MEDICINE_BALL_DEADLIFT_TO_REACH ((FIT_HYPEREXTENSION_EXERCISE_NAME)15) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_ONE_ARM_ONE_LEG_ROW ((FIT_HYPEREXTENSION_EXERCISE_NAME)16) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_ONE_ARM_ROW_WITH_BAND ((FIT_HYPEREXTENSION_EXERCISE_NAME)17) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_OVERHEAD_LUNGE_WITH_MEDICINE_BALL ((FIT_HYPEREXTENSION_EXERCISE_NAME)18) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_PLANK_KNEE_TUCKS ((FIT_HYPEREXTENSION_EXERCISE_NAME)19) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_PLANK_KNEE_TUCKS ((FIT_HYPEREXTENSION_EXERCISE_NAME)20) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_SIDE_STEP ((FIT_HYPEREXTENSION_EXERCISE_NAME)21) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SIDE_STEP ((FIT_HYPEREXTENSION_EXERCISE_NAME)22) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_SINGLE_LEG_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)23) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)24) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_SPINE_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)25) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SPINE_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)26) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_STATIC_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)27) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_STATIC_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)28) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_SUPERMAN_FROM_FLOOR ((FIT_HYPEREXTENSION_EXERCISE_NAME)29) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SUPERMAN_FROM_FLOOR ((FIT_HYPEREXTENSION_EXERCISE_NAME)30) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)31) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)32) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_HYPEREXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)33) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_HYPEREXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)34) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_OPPOSITE_ARM_AND_LEG_LIFT ((FIT_HYPEREXTENSION_EXERCISE_NAME)35) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_OPPOSITE_ARM_AND_LEG_LIFT ((FIT_HYPEREXTENSION_EXERCISE_NAME)36) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_SUPERMAN_ON_SWISS_BALL ((FIT_HYPEREXTENSION_EXERCISE_NAME)37) -#define FIT_HYPEREXTENSION_EXERCISE_NAME_COBRA ((FIT_HYPEREXTENSION_EXERCISE_NAME)38) +#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_CIRCLES ((FIT_HIP_RAISE_EXERCISE_NAME)47) +#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_LIFT ((FIT_HIP_RAISE_EXERCISE_NAME)48) +#define FIT_HIP_RAISE_EXERCISE_NAME_LEG_LIFT_IN_EXTERNAL_ROTATION ((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_HIP_STABILITY_EXERCISE_NAME)0) +#define FIT_HIP_STABILITY_EXERCISE_NAME_DEAD_BUG ((FIT_HIP_STABILITY_EXERCISE_NAME)1) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_DEAD_BUG ((FIT_HIP_STABILITY_EXERCISE_NAME)2) +#define FIT_HIP_STABILITY_EXERCISE_NAME_EXTERNAL_HIP_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)3) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_EXTERNAL_HIP_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)4) +#define FIT_HIP_STABILITY_EXERCISE_NAME_FIRE_HYDRANT_KICKS ((FIT_HIP_STABILITY_EXERCISE_NAME)5) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_FIRE_HYDRANT_KICKS ((FIT_HIP_STABILITY_EXERCISE_NAME)6) +#define FIT_HIP_STABILITY_EXERCISE_NAME_HIP_CIRCLES ((FIT_HIP_STABILITY_EXERCISE_NAME)7) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_HIP_CIRCLES ((FIT_HIP_STABILITY_EXERCISE_NAME)8) +#define FIT_HIP_STABILITY_EXERCISE_NAME_INNER_THIGH_LIFT ((FIT_HIP_STABILITY_EXERCISE_NAME)9) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_INNER_THIGH_LIFT ((FIT_HIP_STABILITY_EXERCISE_NAME)10) +#define FIT_HIP_STABILITY_EXERCISE_NAME_LATERAL_WALKS_WITH_BAND_AT_ANKLES ((FIT_HIP_STABILITY_EXERCISE_NAME)11) +#define FIT_HIP_STABILITY_EXERCISE_NAME_PRETZEL_SIDE_KICK ((FIT_HIP_STABILITY_EXERCISE_NAME)12) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_PRETZEL_SIDE_KICK ((FIT_HIP_STABILITY_EXERCISE_NAME)13) +#define FIT_HIP_STABILITY_EXERCISE_NAME_PRONE_HIP_INTERNAL_ROTATION ((FIT_HIP_STABILITY_EXERCISE_NAME)14) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_PRONE_HIP_INTERNAL_ROTATION ((FIT_HIP_STABILITY_EXERCISE_NAME)15) +#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED ((FIT_HIP_STABILITY_EXERCISE_NAME)16) +#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED_HIP_EXTENSION ((FIT_HIP_STABILITY_EXERCISE_NAME)17) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_QUADRUPED_HIP_EXTENSION ((FIT_HIP_STABILITY_EXERCISE_NAME)18) +#define FIT_HIP_STABILITY_EXERCISE_NAME_QUADRUPED_WITH_LEG_LIFT ((FIT_HIP_STABILITY_EXERCISE_NAME)19) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_QUADRUPED_WITH_LEG_LIFT ((FIT_HIP_STABILITY_EXERCISE_NAME)20) +#define FIT_HIP_STABILITY_EXERCISE_NAME_SIDE_LYING_LEG_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)21) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SIDE_LYING_LEG_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)22) +#define FIT_HIP_STABILITY_EXERCISE_NAME_SLIDING_HIP_ADDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)23) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SLIDING_HIP_ADDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)24) +#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_ADDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)25) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_ADDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)26) +#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_CABLE_HIP_ABDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)27) +#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_HIP_ABDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)28) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_HIP_ABDUCTION ((FIT_HIP_STABILITY_EXERCISE_NAME)29) +#define FIT_HIP_STABILITY_EXERCISE_NAME_STANDING_REAR_LEG_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)30) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_STANDING_REAR_LEG_RAISE ((FIT_HIP_STABILITY_EXERCISE_NAME)31) +#define FIT_HIP_STABILITY_EXERCISE_NAME_SUPINE_HIP_INTERNAL_ROTATION ((FIT_HIP_STABILITY_EXERCISE_NAME)32) +#define FIT_HIP_STABILITY_EXERCISE_NAME_WEIGHTED_SUPINE_HIP_INTERNAL_ROTATION ((FIT_HIP_STABILITY_EXERCISE_NAME)33) +#define FIT_HIP_STABILITY_EXERCISE_NAME_COUNT 34 + +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_HIP_SWING_EXERCISE_NAME)0) +#define FIT_HIP_SWING_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SWING ((FIT_HIP_SWING_EXERCISE_NAME)1) +#define FIT_HIP_SWING_EXERCISE_NAME_STEP_OUT_SWING ((FIT_HIP_SWING_EXERCISE_NAME)2) +#define FIT_HIP_SWING_EXERCISE_NAME_COUNT 3 + +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_HYPEREXTENSION_EXERCISE_NAME)0) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BACK_EXTENSION_WITH_OPPOSITE_ARM_AND_LEG_REACH ((FIT_HYPEREXTENSION_EXERCISE_NAME)1) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_BASE_ROTATIONS ((FIT_HYPEREXTENSION_EXERCISE_NAME)2) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BASE_ROTATIONS ((FIT_HYPEREXTENSION_EXERCISE_NAME)3) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_BENT_KNEE_REVERSE_HYPEREXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)4) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_BENT_KNEE_REVERSE_HYPEREXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)5) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_HOLLOW_HOLD_AND_ROLL ((FIT_HYPEREXTENSION_EXERCISE_NAME)6) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_HOLLOW_HOLD_AND_ROLL ((FIT_HYPEREXTENSION_EXERCISE_NAME)7) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_KICKS ((FIT_HYPEREXTENSION_EXERCISE_NAME)8) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KICKS ((FIT_HYPEREXTENSION_EXERCISE_NAME)9) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_KNEE_RAISES ((FIT_HYPEREXTENSION_EXERCISE_NAME)10) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KNEE_RAISES ((FIT_HYPEREXTENSION_EXERCISE_NAME)11) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_KNEELING_SUPERMAN ((FIT_HYPEREXTENSION_EXERCISE_NAME)12) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_KNEELING_SUPERMAN ((FIT_HYPEREXTENSION_EXERCISE_NAME)13) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_LAT_PULL_DOWN_WITH_ROW ((FIT_HYPEREXTENSION_EXERCISE_NAME)14) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_MEDICINE_BALL_DEADLIFT_TO_REACH ((FIT_HYPEREXTENSION_EXERCISE_NAME)15) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_ONE_ARM_ONE_LEG_ROW ((FIT_HYPEREXTENSION_EXERCISE_NAME)16) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_ONE_ARM_ROW_WITH_BAND ((FIT_HYPEREXTENSION_EXERCISE_NAME)17) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_OVERHEAD_LUNGE_WITH_MEDICINE_BALL ((FIT_HYPEREXTENSION_EXERCISE_NAME)18) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_PLANK_KNEE_TUCKS ((FIT_HYPEREXTENSION_EXERCISE_NAME)19) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_PLANK_KNEE_TUCKS ((FIT_HYPEREXTENSION_EXERCISE_NAME)20) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_SIDE_STEP ((FIT_HYPEREXTENSION_EXERCISE_NAME)21) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SIDE_STEP ((FIT_HYPEREXTENSION_EXERCISE_NAME)22) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_SINGLE_LEG_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)23) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)24) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_SPINE_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)25) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SPINE_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)26) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_STATIC_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)27) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_STATIC_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)28) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_SUPERMAN_FROM_FLOOR ((FIT_HYPEREXTENSION_EXERCISE_NAME)29) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SUPERMAN_FROM_FLOOR ((FIT_HYPEREXTENSION_EXERCISE_NAME)30) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)31) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_BACK_EXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)32) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_HYPEREXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)33) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_HYPEREXTENSION ((FIT_HYPEREXTENSION_EXERCISE_NAME)34) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_SWISS_BALL_OPPOSITE_ARM_AND_LEG_LIFT ((FIT_HYPEREXTENSION_EXERCISE_NAME)35) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_WEIGHTED_SWISS_BALL_OPPOSITE_ARM_AND_LEG_LIFT ((FIT_HYPEREXTENSION_EXERCISE_NAME)36) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_SUPERMAN_ON_SWISS_BALL ((FIT_HYPEREXTENSION_EXERCISE_NAME)37) +#define FIT_HYPEREXTENSION_EXERCISE_NAME_COBRA ((FIT_HYPEREXTENSION_EXERCISE_NAME)38) #define FIT_HYPEREXTENSION_EXERCISE_NAME_SUPINE_FLOOR_BARRE ((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_LATERAL_RAISE_EXERCISE_NAME)0) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_ALTERNATING_LATERAL_RAISE_WITH_STATIC_HOLD ((FIT_LATERAL_RAISE_EXERCISE_NAME)1) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_BAR_MUSCLE_UP ((FIT_LATERAL_RAISE_EXERCISE_NAME)2) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_BENT_OVER_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)3) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_CABLE_DIAGONAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)4) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_CABLE_FRONT_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)5) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_CALORIE_ROW ((FIT_LATERAL_RAISE_EXERCISE_NAME)6) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_COMBO_SHOULDER_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)7) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_DIAGONAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)8) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_V_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)9) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_FRONT_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)10) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_LEANING_DUMBBELL_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)11) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_LYING_DUMBBELL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)12) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_MUSCLE_UP ((FIT_LATERAL_RAISE_EXERCISE_NAME)13) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_ONE_ARM_CABLE_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)14) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_OVERHAND_GRIP_REAR_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)15) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_PLATE_RAISES ((FIT_LATERAL_RAISE_EXERCISE_NAME)16) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_RING_DIP ((FIT_LATERAL_RAISE_EXERCISE_NAME)17) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_RING_DIP ((FIT_LATERAL_RAISE_EXERCISE_NAME)18) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_RING_MUSCLE_UP ((FIT_LATERAL_RAISE_EXERCISE_NAME)19) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_RING_MUSCLE_UP ((FIT_LATERAL_RAISE_EXERCISE_NAME)20) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_ROPE_CLIMB ((FIT_LATERAL_RAISE_EXERCISE_NAME)21) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_ROPE_CLIMB ((FIT_LATERAL_RAISE_EXERCISE_NAME)22) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_SCAPTION ((FIT_LATERAL_RAISE_EXERCISE_NAME)23) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_SEATED_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)24) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_SEATED_REAR_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)25) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_SIDE_LYING_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)26) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_STANDING_LIFT ((FIT_LATERAL_RAISE_EXERCISE_NAME)27) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_SUSPENDED_ROW ((FIT_LATERAL_RAISE_EXERCISE_NAME)28) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_UNDERHAND_GRIP_REAR_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)29) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_WALL_SLIDE ((FIT_LATERAL_RAISE_EXERCISE_NAME)30) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_WALL_SLIDE ((FIT_LATERAL_RAISE_EXERCISE_NAME)31) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_ARM_CIRCLES ((FIT_LATERAL_RAISE_EXERCISE_NAME)32) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_SHAVING_THE_HEAD ((FIT_LATERAL_RAISE_EXERCISE_NAME)33) -#define FIT_LATERAL_RAISE_EXERCISE_NAME_COUNT 34 - -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_LEG_CURL_EXERCISE_NAME)0) -#define FIT_LEG_CURL_EXERCISE_NAME_WEIGHTED_LEG_CURL ((FIT_LEG_CURL_EXERCISE_NAME)1) -#define FIT_LEG_CURL_EXERCISE_NAME_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)2) -#define FIT_LEG_CURL_EXERCISE_NAME_SEATED_BARBELL_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)3) -#define FIT_LEG_CURL_EXERCISE_NAME_SINGLE_LEG_BARBELL_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)4) -#define FIT_LEG_CURL_EXERCISE_NAME_SINGLE_LEG_SLIDING_LEG_CURL ((FIT_LEG_CURL_EXERCISE_NAME)5) -#define FIT_LEG_CURL_EXERCISE_NAME_SLIDING_LEG_CURL ((FIT_LEG_CURL_EXERCISE_NAME)6) -#define FIT_LEG_CURL_EXERCISE_NAME_SPLIT_BARBELL_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)7) -#define FIT_LEG_CURL_EXERCISE_NAME_SPLIT_STANCE_EXTENSION ((FIT_LEG_CURL_EXERCISE_NAME)8) -#define FIT_LEG_CURL_EXERCISE_NAME_STAGGERED_STANCE_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)9) -#define FIT_LEG_CURL_EXERCISE_NAME_SWISS_BALL_HIP_RAISE_AND_LEG_CURL ((FIT_LEG_CURL_EXERCISE_NAME)10) -#define FIT_LEG_CURL_EXERCISE_NAME_ZERCHER_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)11) -#define FIT_LEG_CURL_EXERCISE_NAME_COUNT 12 - -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_LEG_RAISE_EXERCISE_NAME)0) -#define FIT_LEG_RAISE_EXERCISE_NAME_HANGING_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)1) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)2) -#define FIT_LEG_RAISE_EXERCISE_NAME_HANGING_SINGLE_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)3) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_SINGLE_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)4) -#define FIT_LEG_RAISE_EXERCISE_NAME_KETTLEBELL_LEG_RAISES ((FIT_LEG_RAISE_EXERCISE_NAME)5) -#define FIT_LEG_RAISE_EXERCISE_NAME_LEG_LOWERING_DRILL ((FIT_LEG_RAISE_EXERCISE_NAME)6) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LEG_LOWERING_DRILL ((FIT_LEG_RAISE_EXERCISE_NAME)7) -#define FIT_LEG_RAISE_EXERCISE_NAME_LYING_STRAIGHT_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)8) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LYING_STRAIGHT_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)9) -#define FIT_LEG_RAISE_EXERCISE_NAME_MEDICINE_BALL_LEG_DROPS ((FIT_LEG_RAISE_EXERCISE_NAME)10) -#define FIT_LEG_RAISE_EXERCISE_NAME_QUADRUPED_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)11) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_QUADRUPED_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)12) -#define FIT_LEG_RAISE_EXERCISE_NAME_REVERSE_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)13) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)14) -#define FIT_LEG_RAISE_EXERCISE_NAME_REVERSE_LEG_RAISE_ON_SWISS_BALL ((FIT_LEG_RAISE_EXERCISE_NAME)15) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_LEG_RAISE_ON_SWISS_BALL ((FIT_LEG_RAISE_EXERCISE_NAME)16) -#define FIT_LEG_RAISE_EXERCISE_NAME_SINGLE_LEG_LOWERING_DRILL ((FIT_LEG_RAISE_EXERCISE_NAME)17) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_LOWERING_DRILL ((FIT_LEG_RAISE_EXERCISE_NAME)18) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_KNEE_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)19) -#define FIT_LEG_RAISE_EXERCISE_NAME_LATERAL_STEPOVER ((FIT_LEG_RAISE_EXERCISE_NAME)20) -#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LATERAL_STEPOVER ((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_LUNGE_EXERCISE_NAME)0) -#define FIT_LUNGE_EXERCISE_NAME_LUNGE_MATRIX ((FIT_LUNGE_EXERCISE_NAME)1) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_LUNGE_MATRIX ((FIT_LUNGE_EXERCISE_NAME)2) -#define FIT_LUNGE_EXERCISE_NAME_ALTERNATING_BARBELL_FORWARD_LUNGE ((FIT_LUNGE_EXERCISE_NAME)3) -#define FIT_LUNGE_EXERCISE_NAME_ALTERNATING_DUMBBELL_LUNGE_WITH_REACH ((FIT_LUNGE_EXERCISE_NAME)4) -#define FIT_LUNGE_EXERCISE_NAME_BACK_FOOT_ELEVATED_DUMBBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)5) -#define FIT_LUNGE_EXERCISE_NAME_BARBELL_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)6) -#define FIT_LUNGE_EXERCISE_NAME_BARBELL_BULGARIAN_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)7) -#define FIT_LUNGE_EXERCISE_NAME_BARBELL_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)8) -#define FIT_LUNGE_EXERCISE_NAME_BARBELL_FRONT_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)9) -#define FIT_LUNGE_EXERCISE_NAME_BARBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)10) -#define FIT_LUNGE_EXERCISE_NAME_BARBELL_REVERSE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)11) -#define FIT_LUNGE_EXERCISE_NAME_BARBELL_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)12) -#define FIT_LUNGE_EXERCISE_NAME_BARBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)13) -#define FIT_LUNGE_EXERCISE_NAME_CORE_CONTROL_REAR_LUNGE ((FIT_LUNGE_EXERCISE_NAME)14) -#define FIT_LUNGE_EXERCISE_NAME_DIAGONAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)15) -#define FIT_LUNGE_EXERCISE_NAME_DROP_LUNGE ((FIT_LUNGE_EXERCISE_NAME)16) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)17) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_BULGARIAN_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)18) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)19) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_DIAGONAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)20) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)21) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_LUNGE_AND_ROTATION ((FIT_LUNGE_EXERCISE_NAME)22) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_OVERHEAD_BULGARIAN_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)23) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_REVERSE_LUNGE_TO_HIGH_KNEE_AND_PRESS ((FIT_LUNGE_EXERCISE_NAME)24) -#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)25) -#define FIT_LUNGE_EXERCISE_NAME_ELEVATED_FRONT_FOOT_BARBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)26) -#define FIT_LUNGE_EXERCISE_NAME_FRONT_FOOT_ELEVATED_DUMBBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)27) -#define FIT_LUNGE_EXERCISE_NAME_GUNSLINGER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)28) -#define FIT_LUNGE_EXERCISE_NAME_LAWNMOWER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)29) -#define FIT_LUNGE_EXERCISE_NAME_LOW_LUNGE_WITH_ISOMETRIC_ADDUCTION ((FIT_LUNGE_EXERCISE_NAME)30) -#define FIT_LUNGE_EXERCISE_NAME_LOW_SIDE_TO_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)31) -#define FIT_LUNGE_EXERCISE_NAME_LUNGE ((FIT_LUNGE_EXERCISE_NAME)32) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_LUNGE ((FIT_LUNGE_EXERCISE_NAME)33) -#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_ARM_REACH ((FIT_LUNGE_EXERCISE_NAME)34) -#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_DIAGONAL_REACH ((FIT_LUNGE_EXERCISE_NAME)35) -#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_SIDE_BEND ((FIT_LUNGE_EXERCISE_NAME)36) -#define FIT_LUNGE_EXERCISE_NAME_OFFSET_DUMBBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)37) -#define FIT_LUNGE_EXERCISE_NAME_OFFSET_DUMBBELL_REVERSE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)38) -#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_BULGARIAN_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)39) -#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_DUMBBELL_REVERSE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)40) -#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_DUMBBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)41) -#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_LUNGE_WITH_ROTATION ((FIT_LUNGE_EXERCISE_NAME)42) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_BARBELL_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)43) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)44) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)45) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)46) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_DIAGONAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)47) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_LUNGE_WITH_REACH_BACK ((FIT_LUNGE_EXERCISE_NAME)48) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_LUNGE_WITH_REACH_BACK ((FIT_LUNGE_EXERCISE_NAME)49) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_LUNGE_WITH_TWIST_AND_OVERHEAD_REACH ((FIT_LUNGE_EXERCISE_NAME)50) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_LUNGE_WITH_TWIST_AND_OVERHEAD_REACH ((FIT_LUNGE_EXERCISE_NAME)51) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_SLIDING_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)52) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_SLIDING_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)53) -#define FIT_LUNGE_EXERCISE_NAME_REVERSE_SLIDING_LUNGE ((FIT_LUNGE_EXERCISE_NAME)54) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_SLIDING_LUNGE ((FIT_LUNGE_EXERCISE_NAME)55) -#define FIT_LUNGE_EXERCISE_NAME_RUNNERS_LUNGE_TO_BALANCE ((FIT_LUNGE_EXERCISE_NAME)56) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_RUNNERS_LUNGE_TO_BALANCE ((FIT_LUNGE_EXERCISE_NAME)57) -#define FIT_LUNGE_EXERCISE_NAME_SHIFTING_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)58) -#define FIT_LUNGE_EXERCISE_NAME_SIDE_AND_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)59) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_AND_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)60) -#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)61) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)62) -#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_AND_PRESS ((FIT_LUNGE_EXERCISE_NAME)63) -#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_JUMP_OFF ((FIT_LUNGE_EXERCISE_NAME)64) -#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_SWEEP ((FIT_LUNGE_EXERCISE_NAME)65) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE_SWEEP ((FIT_LUNGE_EXERCISE_NAME)66) -#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_TO_CROSSOVER_TAP ((FIT_LUNGE_EXERCISE_NAME)67) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE_TO_CROSSOVER_TAP ((FIT_LUNGE_EXERCISE_NAME)68) -#define FIT_LUNGE_EXERCISE_NAME_SIDE_TO_SIDE_LUNGE_CHOPS ((FIT_LUNGE_EXERCISE_NAME)69) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_LUNGE_CHOPS ((FIT_LUNGE_EXERCISE_NAME)70) -#define FIT_LUNGE_EXERCISE_NAME_SIFF_JUMP_LUNGE ((FIT_LUNGE_EXERCISE_NAME)71) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIFF_JUMP_LUNGE ((FIT_LUNGE_EXERCISE_NAME)72) -#define FIT_LUNGE_EXERCISE_NAME_SINGLE_ARM_REVERSE_LUNGE_AND_PRESS ((FIT_LUNGE_EXERCISE_NAME)73) -#define FIT_LUNGE_EXERCISE_NAME_SLIDING_LATERAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)74) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SLIDING_LATERAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)75) -#define FIT_LUNGE_EXERCISE_NAME_WALKING_BARBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)76) -#define FIT_LUNGE_EXERCISE_NAME_WALKING_DUMBBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)77) -#define FIT_LUNGE_EXERCISE_NAME_WALKING_LUNGE ((FIT_LUNGE_EXERCISE_NAME)78) -#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_WALKING_LUNGE ((FIT_LUNGE_EXERCISE_NAME)79) -#define FIT_LUNGE_EXERCISE_NAME_WIDE_GRIP_OVERHEAD_BARBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)80) -#define FIT_LUNGE_EXERCISE_NAME_COUNT 81 - -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_OLYMPIC_LIFT_EXERCISE_NAME)0) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_SQUAT_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)1) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_POWER_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)2) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_POWER_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)3) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SQUAT_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)4) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_CLEAN_AND_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)5) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_POWER_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)6) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_PULL ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)7) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HIGH_PULL ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)8) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)9) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SPLIT_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)10) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)11) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)12) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_HANG_PULL ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)13) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_ONE_HAND_DUMBBELL_SPLIT_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)14) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_PUSH_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)15) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)16) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_HANG_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)17) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_KETTLEBELL_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)18) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SPLIT_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)19) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SQUAT_CLEAN_AND_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)20) -#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_COUNT 21 - -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_PLANK_EXERCISE_NAME)0) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_45_DEGREE_PLANK ((FIT_PLANK_EXERCISE_NAME)1) -#define FIT_PLANK_EXERCISE_NAME_90_DEGREE_STATIC_HOLD ((FIT_PLANK_EXERCISE_NAME)2) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_90_DEGREE_STATIC_HOLD ((FIT_PLANK_EXERCISE_NAME)3) -#define FIT_PLANK_EXERCISE_NAME_BEAR_CRAWL ((FIT_PLANK_EXERCISE_NAME)4) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_BEAR_CRAWL ((FIT_PLANK_EXERCISE_NAME)5) -#define FIT_PLANK_EXERCISE_NAME_CROSS_BODY_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)6) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_CROSS_BODY_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)7) -#define FIT_PLANK_EXERCISE_NAME_ELBOW_PLANK_PIKE_JACKS ((FIT_PLANK_EXERCISE_NAME)8) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELBOW_PLANK_PIKE_JACKS ((FIT_PLANK_EXERCISE_NAME)9) -#define FIT_PLANK_EXERCISE_NAME_ELEVATED_FEET_PLANK ((FIT_PLANK_EXERCISE_NAME)10) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_PLANK ((FIT_PLANK_EXERCISE_NAME)11) -#define FIT_PLANK_EXERCISE_NAME_ELEVATOR_ABS ((FIT_PLANK_EXERCISE_NAME)12) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELEVATOR_ABS ((FIT_PLANK_EXERCISE_NAME)13) -#define FIT_PLANK_EXERCISE_NAME_EXTENDED_PLANK ((FIT_PLANK_EXERCISE_NAME)14) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_EXTENDED_PLANK ((FIT_PLANK_EXERCISE_NAME)15) -#define FIT_PLANK_EXERCISE_NAME_FULL_PLANK_PASSE_TWIST ((FIT_PLANK_EXERCISE_NAME)16) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_FULL_PLANK_PASSE_TWIST ((FIT_PLANK_EXERCISE_NAME)17) -#define FIT_PLANK_EXERCISE_NAME_INCHING_ELBOW_PLANK ((FIT_PLANK_EXERCISE_NAME)18) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_INCHING_ELBOW_PLANK ((FIT_PLANK_EXERCISE_NAME)19) -#define FIT_PLANK_EXERCISE_NAME_INCHWORM_TO_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)20) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_INCHWORM_TO_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)21) -#define FIT_PLANK_EXERCISE_NAME_KNEELING_PLANK ((FIT_PLANK_EXERCISE_NAME)22) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_KNEELING_PLANK ((FIT_PLANK_EXERCISE_NAME)23) -#define FIT_PLANK_EXERCISE_NAME_KNEELING_SIDE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)24) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_KNEELING_SIDE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)25) -#define FIT_PLANK_EXERCISE_NAME_LATERAL_ROLL ((FIT_PLANK_EXERCISE_NAME)26) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_LATERAL_ROLL ((FIT_PLANK_EXERCISE_NAME)27) -#define FIT_PLANK_EXERCISE_NAME_LYING_REVERSE_PLANK ((FIT_PLANK_EXERCISE_NAME)28) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_LYING_REVERSE_PLANK ((FIT_PLANK_EXERCISE_NAME)29) -#define FIT_PLANK_EXERCISE_NAME_MEDICINE_BALL_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)30) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MEDICINE_BALL_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)31) -#define FIT_PLANK_EXERCISE_NAME_MODIFIED_MOUNTAIN_CLIMBER_AND_EXTENSION ((FIT_PLANK_EXERCISE_NAME)32) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MODIFIED_MOUNTAIN_CLIMBER_AND_EXTENSION ((FIT_PLANK_EXERCISE_NAME)33) -#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)34) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)35) -#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_ON_SLIDING_DISCS ((FIT_PLANK_EXERCISE_NAME)36) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_ON_SLIDING_DISCS ((FIT_PLANK_EXERCISE_NAME)37) -#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_FEET_ON_BOSU_BALL ((FIT_PLANK_EXERCISE_NAME)38) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_FEET_ON_BOSU_BALL ((FIT_PLANK_EXERCISE_NAME)39) -#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_HANDS_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)40) -#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_HANDS_ON_SWISS_BALL ((FIT_PLANK_EXERCISE_NAME)41) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_HANDS_ON_SWISS_BALL ((FIT_PLANK_EXERCISE_NAME)42) -#define FIT_PLANK_EXERCISE_NAME_PLANK ((FIT_PLANK_EXERCISE_NAME)43) -#define FIT_PLANK_EXERCISE_NAME_PLANK_JACKS_WITH_FEET_ON_SLIDING_DISCS ((FIT_PLANK_EXERCISE_NAME)44) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_JACKS_WITH_FEET_ON_SLIDING_DISCS ((FIT_PLANK_EXERCISE_NAME)45) -#define FIT_PLANK_EXERCISE_NAME_PLANK_KNEE_TWIST ((FIT_PLANK_EXERCISE_NAME)46) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_KNEE_TWIST ((FIT_PLANK_EXERCISE_NAME)47) -#define FIT_PLANK_EXERCISE_NAME_PLANK_PIKE_JUMPS ((FIT_PLANK_EXERCISE_NAME)48) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_PIKE_JUMPS ((FIT_PLANK_EXERCISE_NAME)49) -#define FIT_PLANK_EXERCISE_NAME_PLANK_PIKES ((FIT_PLANK_EXERCISE_NAME)50) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_PIKES ((FIT_PLANK_EXERCISE_NAME)51) -#define FIT_PLANK_EXERCISE_NAME_PLANK_TO_STAND_UP ((FIT_PLANK_EXERCISE_NAME)52) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_TO_STAND_UP ((FIT_PLANK_EXERCISE_NAME)53) -#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_ARM_RAISE ((FIT_PLANK_EXERCISE_NAME)54) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_ARM_RAISE ((FIT_PLANK_EXERCISE_NAME)55) -#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_KNEE_TO_ELBOW ((FIT_PLANK_EXERCISE_NAME)56) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_KNEE_TO_ELBOW ((FIT_PLANK_EXERCISE_NAME)57) -#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_OBLIQUE_CRUNCH ((FIT_PLANK_EXERCISE_NAME)58) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_OBLIQUE_CRUNCH ((FIT_PLANK_EXERCISE_NAME)59) -#define FIT_PLANK_EXERCISE_NAME_PLYOMETRIC_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)60) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLYOMETRIC_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)61) -#define FIT_PLANK_EXERCISE_NAME_ROLLING_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)62) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ROLLING_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)63) -#define FIT_PLANK_EXERCISE_NAME_SIDE_KICK_PLANK ((FIT_PLANK_EXERCISE_NAME)64) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_KICK_PLANK ((FIT_PLANK_EXERCISE_NAME)65) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)66) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)67) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_AND_ROW ((FIT_PLANK_EXERCISE_NAME)68) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_AND_ROW ((FIT_PLANK_EXERCISE_NAME)69) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_LIFT ((FIT_PLANK_EXERCISE_NAME)70) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_LIFT ((FIT_PLANK_EXERCISE_NAME)71) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_ELBOW_ON_BOSU_BALL ((FIT_PLANK_EXERCISE_NAME)72) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_ELBOW_ON_BOSU_BALL ((FIT_PLANK_EXERCISE_NAME)73) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_FEET_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)74) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_FEET_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)75) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_KNEE_CIRCLE ((FIT_PLANK_EXERCISE_NAME)76) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_KNEE_CIRCLE ((FIT_PLANK_EXERCISE_NAME)77) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_KNEE_TUCK ((FIT_PLANK_EXERCISE_NAME)78) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_KNEE_TUCK ((FIT_PLANK_EXERCISE_NAME)79) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)80) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)81) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_REACH_UNDER ((FIT_PLANK_EXERCISE_NAME)82) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_REACH_UNDER ((FIT_PLANK_EXERCISE_NAME)83) -#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_ELEVATED_FEET_PLANK ((FIT_PLANK_EXERCISE_NAME)84) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_ELEVATED_FEET_PLANK ((FIT_PLANK_EXERCISE_NAME)85) -#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_FLEX_AND_EXTEND ((FIT_PLANK_EXERCISE_NAME)86) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_FLEX_AND_EXTEND ((FIT_PLANK_EXERCISE_NAME)87) -#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)88) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)89) -#define FIT_PLANK_EXERCISE_NAME_SPIDERMAN_PLANK ((FIT_PLANK_EXERCISE_NAME)90) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SPIDERMAN_PLANK ((FIT_PLANK_EXERCISE_NAME)91) -#define FIT_PLANK_EXERCISE_NAME_STRAIGHT_ARM_PLANK ((FIT_PLANK_EXERCISE_NAME)92) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_STRAIGHT_ARM_PLANK ((FIT_PLANK_EXERCISE_NAME)93) -#define FIT_PLANK_EXERCISE_NAME_STRAIGHT_ARM_PLANK_WITH_SHOULDER_TOUCH ((FIT_PLANK_EXERCISE_NAME)94) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_STRAIGHT_ARM_PLANK_WITH_SHOULDER_TOUCH ((FIT_PLANK_EXERCISE_NAME)95) -#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK ((FIT_PLANK_EXERCISE_NAME)96) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK ((FIT_PLANK_EXERCISE_NAME)97) -#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)98) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)99) -#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_LEG_LIFT_AND_HOLD ((FIT_PLANK_EXERCISE_NAME)100) -#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_WITH_FEET_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)101) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_WITH_FEET_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)102) -#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PRONE_JACKKNIFE ((FIT_PLANK_EXERCISE_NAME)103) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PRONE_JACKKNIFE ((FIT_PLANK_EXERCISE_NAME)104) -#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)105) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)106) -#define FIT_PLANK_EXERCISE_NAME_THREE_WAY_PLANK ((FIT_PLANK_EXERCISE_NAME)107) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_THREE_WAY_PLANK ((FIT_PLANK_EXERCISE_NAME)108) -#define FIT_PLANK_EXERCISE_NAME_TOWEL_PLANK_AND_KNEE_IN ((FIT_PLANK_EXERCISE_NAME)109) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TOWEL_PLANK_AND_KNEE_IN ((FIT_PLANK_EXERCISE_NAME)110) -#define FIT_PLANK_EXERCISE_NAME_T_STABILIZATION ((FIT_PLANK_EXERCISE_NAME)111) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_T_STABILIZATION ((FIT_PLANK_EXERCISE_NAME)112) -#define FIT_PLANK_EXERCISE_NAME_TURKISH_GET_UP_TO_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)113) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TURKISH_GET_UP_TO_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)114) -#define FIT_PLANK_EXERCISE_NAME_TWO_POINT_PLANK ((FIT_PLANK_EXERCISE_NAME)115) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TWO_POINT_PLANK ((FIT_PLANK_EXERCISE_NAME)116) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK ((FIT_PLANK_EXERCISE_NAME)117) -#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_DIAGONAL_ARM_LIFT ((FIT_PLANK_EXERCISE_NAME)118) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_DIAGONAL_ARM_LIFT ((FIT_PLANK_EXERCISE_NAME)119) -#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_DIAGONAL_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)120) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_DIAGONAL_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)121) -#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)122) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)123) -#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_OPPOSITE_ARM_AND_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)124) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_HANDS_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)125) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_LEG_LIFT_AND_HOLD ((FIT_PLANK_EXERCISE_NAME)126) -#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_OPPOSITE_ARM_AND_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)127) -#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_FEET_ON_SWISS_BALL ((FIT_PLANK_EXERCISE_NAME)128) -#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_TO_PLANK_WITH_REACH_UNDER ((FIT_PLANK_EXERCISE_NAME)129) -#define FIT_PLANK_EXERCISE_NAME_BRIDGE_WITH_GLUTE_LOWER_LIFT ((FIT_PLANK_EXERCISE_NAME)130) -#define FIT_PLANK_EXERCISE_NAME_BRIDGE_ONE_LEG_BRIDGE ((FIT_PLANK_EXERCISE_NAME)131) -#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_ARM_VARIATIONS ((FIT_PLANK_EXERCISE_NAME)132) -#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)133) -#define FIT_PLANK_EXERCISE_NAME_REVERSE_PLANK_WITH_LEG_PULL ((FIT_PLANK_EXERCISE_NAME)134) -#define FIT_PLANK_EXERCISE_NAME_COUNT 135 - -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_PLYO_EXERCISE_NAME)0) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_ALTERNATING_JUMP_LUNGE ((FIT_PLYO_EXERCISE_NAME)1) -#define FIT_PLYO_EXERCISE_NAME_BARBELL_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)2) -#define FIT_PLYO_EXERCISE_NAME_BODY_WEIGHT_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)3) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)4) -#define FIT_PLYO_EXERCISE_NAME_CROSS_KNEE_STRIKE ((FIT_PLYO_EXERCISE_NAME)5) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_CROSS_KNEE_STRIKE ((FIT_PLYO_EXERCISE_NAME)6) -#define FIT_PLYO_EXERCISE_NAME_DEPTH_JUMP ((FIT_PLYO_EXERCISE_NAME)7) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_DEPTH_JUMP ((FIT_PLYO_EXERCISE_NAME)8) -#define FIT_PLYO_EXERCISE_NAME_DUMBBELL_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)9) -#define FIT_PLYO_EXERCISE_NAME_DUMBBELL_SPLIT_JUMP ((FIT_PLYO_EXERCISE_NAME)10) -#define FIT_PLYO_EXERCISE_NAME_FRONT_KNEE_STRIKE ((FIT_PLYO_EXERCISE_NAME)11) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_FRONT_KNEE_STRIKE ((FIT_PLYO_EXERCISE_NAME)12) -#define FIT_PLYO_EXERCISE_NAME_HIGH_BOX_JUMP ((FIT_PLYO_EXERCISE_NAME)13) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_HIGH_BOX_JUMP ((FIT_PLYO_EXERCISE_NAME)14) -#define FIT_PLYO_EXERCISE_NAME_ISOMETRIC_EXPLOSIVE_BODY_WEIGHT_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)15) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_ISOMETRIC_EXPLOSIVE_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)16) -#define FIT_PLYO_EXERCISE_NAME_LATERAL_LEAP_AND_HOP ((FIT_PLYO_EXERCISE_NAME)17) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_LEAP_AND_HOP ((FIT_PLYO_EXERCISE_NAME)18) -#define FIT_PLYO_EXERCISE_NAME_LATERAL_PLYO_SQUATS ((FIT_PLYO_EXERCISE_NAME)19) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_PLYO_SQUATS ((FIT_PLYO_EXERCISE_NAME)20) -#define FIT_PLYO_EXERCISE_NAME_LATERAL_SLIDE ((FIT_PLYO_EXERCISE_NAME)21) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_SLIDE ((FIT_PLYO_EXERCISE_NAME)22) -#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_OVERHEAD_THROWS ((FIT_PLYO_EXERCISE_NAME)23) -#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_SIDE_THROW ((FIT_PLYO_EXERCISE_NAME)24) -#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_SLAM ((FIT_PLYO_EXERCISE_NAME)25) -#define FIT_PLYO_EXERCISE_NAME_SIDE_TO_SIDE_MEDICINE_BALL_THROWS ((FIT_PLYO_EXERCISE_NAME)26) -#define FIT_PLYO_EXERCISE_NAME_SIDE_TO_SIDE_SHUFFLE_JUMP ((FIT_PLYO_EXERCISE_NAME)27) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_SHUFFLE_JUMP ((FIT_PLYO_EXERCISE_NAME)28) -#define FIT_PLYO_EXERCISE_NAME_SQUAT_JUMP_ONTO_BOX ((FIT_PLYO_EXERCISE_NAME)29) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SQUAT_JUMP_ONTO_BOX ((FIT_PLYO_EXERCISE_NAME)30) -#define FIT_PLYO_EXERCISE_NAME_SQUAT_JUMPS_IN_AND_OUT ((FIT_PLYO_EXERCISE_NAME)31) -#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SQUAT_JUMPS_IN_AND_OUT ((FIT_PLYO_EXERCISE_NAME)32) -#define FIT_PLYO_EXERCISE_NAME_COUNT 33 - -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_PULL_UP_EXERCISE_NAME)0) -#define FIT_PULL_UP_EXERCISE_NAME_30_DEGREE_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)1) -#define FIT_PULL_UP_EXERCISE_NAME_BAND_ASSISTED_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)2) -#define FIT_PULL_UP_EXERCISE_NAME_CLOSE_GRIP_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)3) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_CLOSE_GRIP_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)4) -#define FIT_PULL_UP_EXERCISE_NAME_CLOSE_GRIP_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)5) -#define FIT_PULL_UP_EXERCISE_NAME_CROSSOVER_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)6) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_CROSSOVER_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)7) -#define FIT_PULL_UP_EXERCISE_NAME_EZ_BAR_PULLOVER ((FIT_PULL_UP_EXERCISE_NAME)8) -#define FIT_PULL_UP_EXERCISE_NAME_HANGING_HURDLE ((FIT_PULL_UP_EXERCISE_NAME)9) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_HANGING_HURDLE ((FIT_PULL_UP_EXERCISE_NAME)10) -#define FIT_PULL_UP_EXERCISE_NAME_KNEELING_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)11) -#define FIT_PULL_UP_EXERCISE_NAME_KNEELING_UNDERHAND_GRIP_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)12) -#define FIT_PULL_UP_EXERCISE_NAME_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)13) -#define FIT_PULL_UP_EXERCISE_NAME_MIXED_GRIP_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)14) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_MIXED_GRIP_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)15) -#define FIT_PULL_UP_EXERCISE_NAME_MIXED_GRIP_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)16) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_MIXED_GRIP_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)17) -#define FIT_PULL_UP_EXERCISE_NAME_REVERSE_GRIP_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)18) -#define FIT_PULL_UP_EXERCISE_NAME_STANDING_CABLE_PULLOVER ((FIT_PULL_UP_EXERCISE_NAME)19) -#define FIT_PULL_UP_EXERCISE_NAME_STRAIGHT_ARM_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)20) -#define FIT_PULL_UP_EXERCISE_NAME_SWISS_BALL_EZ_BAR_PULLOVER ((FIT_PULL_UP_EXERCISE_NAME)21) -#define FIT_PULL_UP_EXERCISE_NAME_TOWEL_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)22) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_TOWEL_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)23) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)24) -#define FIT_PULL_UP_EXERCISE_NAME_WIDE_GRIP_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)25) -#define FIT_PULL_UP_EXERCISE_NAME_WIDE_GRIP_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)26) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_WIDE_GRIP_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)27) -#define FIT_PULL_UP_EXERCISE_NAME_BURPEE_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)28) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_BURPEE_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)29) -#define FIT_PULL_UP_EXERCISE_NAME_JUMPING_PULL_UPS ((FIT_PULL_UP_EXERCISE_NAME)30) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_JUMPING_PULL_UPS ((FIT_PULL_UP_EXERCISE_NAME)31) -#define FIT_PULL_UP_EXERCISE_NAME_KIPPING_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)32) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_KIPPING_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)33) -#define FIT_PULL_UP_EXERCISE_NAME_L_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)34) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_L_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)35) -#define FIT_PULL_UP_EXERCISE_NAME_SUSPENDED_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)36) -#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_SUSPENDED_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)37) -#define FIT_PULL_UP_EXERCISE_NAME_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)38) -#define FIT_PULL_UP_EXERCISE_NAME_COUNT 39 - -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_PUSH_UP_EXERCISE_NAME)0) -#define FIT_PUSH_UP_EXERCISE_NAME_ALTERNATING_STAGGERED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)1) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_STAGGERED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)2) -#define FIT_PUSH_UP_EXERCISE_NAME_ALTERNATING_HANDS_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)3) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_HANDS_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)4) -#define FIT_PUSH_UP_EXERCISE_NAME_BOSU_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)5) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_BOSU_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)6) -#define FIT_PUSH_UP_EXERCISE_NAME_CLAPPING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)7) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLAPPING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)8) -#define FIT_PUSH_UP_EXERCISE_NAME_CLOSE_GRIP_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)9) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLOSE_GRIP_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)10) -#define FIT_PUSH_UP_EXERCISE_NAME_CLOSE_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)11) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLOSE_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)12) -#define FIT_PUSH_UP_EXERCISE_NAME_DECLINE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)13) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_DECLINE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)14) -#define FIT_PUSH_UP_EXERCISE_NAME_DIAMOND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)15) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_DIAMOND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)16) -#define FIT_PUSH_UP_EXERCISE_NAME_EXPLOSIVE_CROSSOVER_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)17) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_EXPLOSIVE_CROSSOVER_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)18) -#define FIT_PUSH_UP_EXERCISE_NAME_EXPLOSIVE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)19) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_EXPLOSIVE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)20) -#define FIT_PUSH_UP_EXERCISE_NAME_FEET_ELEVATED_SIDE_TO_SIDE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)21) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_FEET_ELEVATED_SIDE_TO_SIDE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)22) -#define FIT_PUSH_UP_EXERCISE_NAME_HAND_RELEASE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)23) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_HAND_RELEASE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)24) -#define FIT_PUSH_UP_EXERCISE_NAME_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)25) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)26) -#define FIT_PUSH_UP_EXERCISE_NAME_INCLINE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)27) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_INCLINE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)28) -#define FIT_PUSH_UP_EXERCISE_NAME_ISOMETRIC_EXPLOSIVE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)29) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ISOMETRIC_EXPLOSIVE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)30) -#define FIT_PUSH_UP_EXERCISE_NAME_JUDO_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)31) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_JUDO_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)32) -#define FIT_PUSH_UP_EXERCISE_NAME_KNEELING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)33) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_KNEELING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)34) -#define FIT_PUSH_UP_EXERCISE_NAME_MEDICINE_BALL_CHEST_PASS ((FIT_PUSH_UP_EXERCISE_NAME)35) -#define FIT_PUSH_UP_EXERCISE_NAME_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)36) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)37) -#define FIT_PUSH_UP_EXERCISE_NAME_ONE_ARM_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)38) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ONE_ARM_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)39) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)40) -#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_AND_ROW ((FIT_PUSH_UP_EXERCISE_NAME)41) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_AND_ROW ((FIT_PUSH_UP_EXERCISE_NAME)42) -#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_PLUS ((FIT_PUSH_UP_EXERCISE_NAME)43) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_PLUS ((FIT_PUSH_UP_EXERCISE_NAME)44) -#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_WITH_FEET_ON_SWISS_BALL ((FIT_PUSH_UP_EXERCISE_NAME)45) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_WITH_FEET_ON_SWISS_BALL ((FIT_PUSH_UP_EXERCISE_NAME)46) -#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_WITH_ONE_HAND_ON_MEDICINE_BALL ((FIT_PUSH_UP_EXERCISE_NAME)47) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_WITH_ONE_HAND_ON_MEDICINE_BALL ((FIT_PUSH_UP_EXERCISE_NAME)48) -#define FIT_PUSH_UP_EXERCISE_NAME_SHOULDER_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)49) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SHOULDER_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)50) -#define FIT_PUSH_UP_EXERCISE_NAME_SINGLE_ARM_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)51) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SINGLE_ARM_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)52) -#define FIT_PUSH_UP_EXERCISE_NAME_SPIDERMAN_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)53) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SPIDERMAN_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)54) -#define FIT_PUSH_UP_EXERCISE_NAME_STACKED_FEET_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)55) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_STACKED_FEET_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)56) -#define FIT_PUSH_UP_EXERCISE_NAME_STAGGERED_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)57) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_STAGGERED_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)58) -#define FIT_PUSH_UP_EXERCISE_NAME_SUSPENDED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)59) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SUSPENDED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)60) -#define FIT_PUSH_UP_EXERCISE_NAME_SWISS_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)61) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)62) -#define FIT_PUSH_UP_EXERCISE_NAME_SWISS_BALL_PUSH_UP_PLUS ((FIT_PUSH_UP_EXERCISE_NAME)63) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PUSH_UP_PLUS ((FIT_PUSH_UP_EXERCISE_NAME)64) -#define FIT_PUSH_UP_EXERCISE_NAME_T_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)65) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_T_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)66) -#define FIT_PUSH_UP_EXERCISE_NAME_TRIPLE_STOP_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)67) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_TRIPLE_STOP_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)68) -#define FIT_PUSH_UP_EXERCISE_NAME_WIDE_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)69) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_WIDE_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)70) -#define FIT_PUSH_UP_EXERCISE_NAME_PARALLETTE_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)71) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PARALLETTE_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)72) -#define FIT_PUSH_UP_EXERCISE_NAME_RING_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)73) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_RING_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)74) -#define FIT_PUSH_UP_EXERCISE_NAME_RING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)75) -#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_RING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)76) -#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)77) -#define FIT_PUSH_UP_EXERCISE_NAME_PILATES_PUSHUP ((FIT_PUSH_UP_EXERCISE_NAME)78) -#define FIT_PUSH_UP_EXERCISE_NAME_COUNT 79 - -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_ROW_EXERCISE_NAME)0) -#define FIT_ROW_EXERCISE_NAME_CABLE_ROW_STANDING ((FIT_ROW_EXERCISE_NAME)1) -#define FIT_ROW_EXERCISE_NAME_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)2) -#define FIT_ROW_EXERCISE_NAME_ELEVATED_FEET_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)3) -#define FIT_ROW_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)4) -#define FIT_ROW_EXERCISE_NAME_FACE_PULL ((FIT_ROW_EXERCISE_NAME)5) -#define FIT_ROW_EXERCISE_NAME_FACE_PULL_WITH_EXTERNAL_ROTATION ((FIT_ROW_EXERCISE_NAME)6) -#define FIT_ROW_EXERCISE_NAME_INVERTED_ROW_WITH_FEET_ON_SWISS_BALL ((FIT_ROW_EXERCISE_NAME)7) -#define FIT_ROW_EXERCISE_NAME_WEIGHTED_INVERTED_ROW_WITH_FEET_ON_SWISS_BALL ((FIT_ROW_EXERCISE_NAME)8) -#define FIT_ROW_EXERCISE_NAME_KETTLEBELL_ROW ((FIT_ROW_EXERCISE_NAME)9) -#define FIT_ROW_EXERCISE_NAME_MODIFIED_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)10) -#define FIT_ROW_EXERCISE_NAME_WEIGHTED_MODIFIED_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)11) -#define FIT_ROW_EXERCISE_NAME_NEUTRAL_GRIP_ALTERNATING_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)12) -#define FIT_ROW_EXERCISE_NAME_ONE_ARM_BENT_OVER_ROW ((FIT_ROW_EXERCISE_NAME)13) -#define FIT_ROW_EXERCISE_NAME_ONE_LEGGED_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)14) -#define FIT_ROW_EXERCISE_NAME_RENEGADE_ROW ((FIT_ROW_EXERCISE_NAME)15) -#define FIT_ROW_EXERCISE_NAME_REVERSE_GRIP_BARBELL_ROW ((FIT_ROW_EXERCISE_NAME)16) -#define FIT_ROW_EXERCISE_NAME_ROPE_HANDLE_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)17) -#define FIT_ROW_EXERCISE_NAME_SEATED_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)18) -#define FIT_ROW_EXERCISE_NAME_SEATED_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)19) -#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)20) -#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_CABLE_ROW_AND_ROTATION ((FIT_ROW_EXERCISE_NAME)21) -#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)22) -#define FIT_ROW_EXERCISE_NAME_WEIGHTED_SINGLE_ARM_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)23) -#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_NEUTRAL_GRIP_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)24) -#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_NEUTRAL_GRIP_DUMBBELL_ROW_AND_ROTATION ((FIT_ROW_EXERCISE_NAME)25) -#define FIT_ROW_EXERCISE_NAME_SUSPENDED_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)26) -#define FIT_ROW_EXERCISE_NAME_WEIGHTED_SUSPENDED_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)27) -#define FIT_ROW_EXERCISE_NAME_T_BAR_ROW ((FIT_ROW_EXERCISE_NAME)28) -#define FIT_ROW_EXERCISE_NAME_TOWEL_GRIP_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)29) -#define FIT_ROW_EXERCISE_NAME_WEIGHTED_TOWEL_GRIP_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)30) -#define FIT_ROW_EXERCISE_NAME_UNDERHAND_GRIP_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)31) -#define FIT_ROW_EXERCISE_NAME_V_GRIP_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)32) -#define FIT_ROW_EXERCISE_NAME_WIDE_GRIP_SEATED_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)33) -#define FIT_ROW_EXERCISE_NAME_COUNT 34 - -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_SHOULDER_PRESS_EXERCISE_NAME)0) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_ARNOLD_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)1) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_FRONT_SQUAT_TO_PUSH_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)2) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_PUSH_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)3) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)4) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DEAD_CURL_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)5) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_ALTERNATING_SHOULDER_PRESS_AND_TWIST ((FIT_SHOULDER_PRESS_EXERCISE_NAME)6) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_HAMMER_CURL_TO_LUNGE_TO_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)7) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_PUSH_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)8) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_FLOOR_INVERTED_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)9) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHTED_FLOOR_INVERTED_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)10) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_INVERTED_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)11) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHTED_INVERTED_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)12) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_ONE_ARM_PUSH_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)13) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_OVERHEAD_BARBELL_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)14) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_OVERHEAD_DUMBBELL_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)15) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SEATED_BARBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)16) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SEATED_DUMBBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)17) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)18) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SINGLE_ARM_STEP_UP_AND_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)19) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SMITH_MACHINE_OVERHEAD_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)20) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SPLIT_STANCE_HAMMER_CURL_TO_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)21) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SWISS_BALL_DUMBBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)22) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHT_PLATE_FRONT_RAISE ((FIT_SHOULDER_PRESS_EXERCISE_NAME)23) -#define FIT_SHOULDER_PRESS_EXERCISE_NAME_COUNT 24 - -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_SHOULDER_STABILITY_EXERCISE_NAME)0) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BAND_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)1) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BAND_INTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)2) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BENT_ARM_LATERAL_RAISE_AND_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)3) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_CABLE_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)4) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_DUMBBELL_FACE_PULL_WITH_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)5) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)6) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)7) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)8) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)9) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)10) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)11) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)12) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)13) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_L_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)14) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_L_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)15) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)16) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)17) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_W_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)18) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_W_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)19) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)20) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)21) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_LYING_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)22) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SEATED_DUMBBELL_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)23) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_STANDING_L_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)24) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)25) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)26) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)27) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)28) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_W_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)29) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_W_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)30) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)31) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)32) -#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_COUNT 33 - -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_SHRUG_EXERCISE_NAME)0) -#define FIT_SHRUG_EXERCISE_NAME_BARBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)1) -#define FIT_SHRUG_EXERCISE_NAME_BARBELL_UPRIGHT_ROW ((FIT_SHRUG_EXERCISE_NAME)2) -#define FIT_SHRUG_EXERCISE_NAME_BEHIND_THE_BACK_SMITH_MACHINE_SHRUG ((FIT_SHRUG_EXERCISE_NAME)3) -#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_JUMP_SHRUG ((FIT_SHRUG_EXERCISE_NAME)4) -#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)5) -#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_UPRIGHT_ROW ((FIT_SHRUG_EXERCISE_NAME)6) -#define FIT_SHRUG_EXERCISE_NAME_INCLINE_DUMBBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)7) -#define FIT_SHRUG_EXERCISE_NAME_OVERHEAD_BARBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)8) -#define FIT_SHRUG_EXERCISE_NAME_OVERHEAD_DUMBBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)9) -#define FIT_SHRUG_EXERCISE_NAME_SCAPTION_AND_SHRUG ((FIT_SHRUG_EXERCISE_NAME)10) -#define FIT_SHRUG_EXERCISE_NAME_SCAPULAR_RETRACTION ((FIT_SHRUG_EXERCISE_NAME)11) -#define FIT_SHRUG_EXERCISE_NAME_SERRATUS_CHAIR_SHRUG ((FIT_SHRUG_EXERCISE_NAME)12) -#define FIT_SHRUG_EXERCISE_NAME_WEIGHTED_SERRATUS_CHAIR_SHRUG ((FIT_SHRUG_EXERCISE_NAME)13) -#define FIT_SHRUG_EXERCISE_NAME_SERRATUS_SHRUG ((FIT_SHRUG_EXERCISE_NAME)14) -#define FIT_SHRUG_EXERCISE_NAME_WEIGHTED_SERRATUS_SHRUG ((FIT_SHRUG_EXERCISE_NAME)15) -#define FIT_SHRUG_EXERCISE_NAME_WIDE_GRIP_JUMP_SHRUG ((FIT_SHRUG_EXERCISE_NAME)16) -#define FIT_SHRUG_EXERCISE_NAME_COUNT 17 - -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_SIT_UP_EXERCISE_NAME)0) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)1) -#define FIT_SIT_UP_EXERCISE_NAME_BENT_KNEE_V_UP ((FIT_SIT_UP_EXERCISE_NAME)2) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_BENT_KNEE_V_UP ((FIT_SIT_UP_EXERCISE_NAME)3) -#define FIT_SIT_UP_EXERCISE_NAME_BUTTERFLY_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)4) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_BUTTERFLY_SITUP ((FIT_SIT_UP_EXERCISE_NAME)5) -#define FIT_SIT_UP_EXERCISE_NAME_CROSS_PUNCH_ROLL_UP ((FIT_SIT_UP_EXERCISE_NAME)6) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_CROSS_PUNCH_ROLL_UP ((FIT_SIT_UP_EXERCISE_NAME)7) -#define FIT_SIT_UP_EXERCISE_NAME_CROSSED_ARMS_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)8) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_CROSSED_ARMS_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)9) -#define FIT_SIT_UP_EXERCISE_NAME_GET_UP_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)10) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_GET_UP_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)11) -#define FIT_SIT_UP_EXERCISE_NAME_HOVERING_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)12) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_HOVERING_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)13) -#define FIT_SIT_UP_EXERCISE_NAME_KETTLEBELL_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)14) -#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_ALTERNATING_V_UP ((FIT_SIT_UP_EXERCISE_NAME)15) -#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)16) -#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_V_UP ((FIT_SIT_UP_EXERCISE_NAME)17) -#define FIT_SIT_UP_EXERCISE_NAME_MODIFIED_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)18) -#define FIT_SIT_UP_EXERCISE_NAME_NEGATIVE_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)19) -#define FIT_SIT_UP_EXERCISE_NAME_ONE_ARM_FULL_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)20) -#define FIT_SIT_UP_EXERCISE_NAME_RECLINING_CIRCLE ((FIT_SIT_UP_EXERCISE_NAME)21) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_RECLINING_CIRCLE ((FIT_SIT_UP_EXERCISE_NAME)22) -#define FIT_SIT_UP_EXERCISE_NAME_REVERSE_CURL_UP ((FIT_SIT_UP_EXERCISE_NAME)23) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_REVERSE_CURL_UP ((FIT_SIT_UP_EXERCISE_NAME)24) -#define FIT_SIT_UP_EXERCISE_NAME_SINGLE_LEG_SWISS_BALL_JACKKNIFE ((FIT_SIT_UP_EXERCISE_NAME)25) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SWISS_BALL_JACKKNIFE ((FIT_SIT_UP_EXERCISE_NAME)26) -#define FIT_SIT_UP_EXERCISE_NAME_THE_TEASER ((FIT_SIT_UP_EXERCISE_NAME)27) -#define FIT_SIT_UP_EXERCISE_NAME_THE_TEASER_WEIGHTED ((FIT_SIT_UP_EXERCISE_NAME)28) -#define FIT_SIT_UP_EXERCISE_NAME_THREE_PART_ROLL_DOWN ((FIT_SIT_UP_EXERCISE_NAME)29) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_THREE_PART_ROLL_DOWN ((FIT_SIT_UP_EXERCISE_NAME)30) -#define FIT_SIT_UP_EXERCISE_NAME_V_UP ((FIT_SIT_UP_EXERCISE_NAME)31) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_V_UP ((FIT_SIT_UP_EXERCISE_NAME)32) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_RUSSIAN_TWIST_ON_SWISS_BALL ((FIT_SIT_UP_EXERCISE_NAME)33) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)34) -#define FIT_SIT_UP_EXERCISE_NAME_X_ABS ((FIT_SIT_UP_EXERCISE_NAME)35) -#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_X_ABS ((FIT_SIT_UP_EXERCISE_NAME)36) -#define FIT_SIT_UP_EXERCISE_NAME_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)37) -#define FIT_SIT_UP_EXERCISE_NAME_COUNT 38 - -typedef FIT_UINT16 FIT_SQUAT_EXERCISE_NAME; -#define FIT_SQUAT_EXERCISE_NAME_INVALID FIT_UINT16_INVALID -#define FIT_SQUAT_EXERCISE_NAME_LEG_PRESS ((FIT_SQUAT_EXERCISE_NAME)0) -#define FIT_SQUAT_EXERCISE_NAME_BACK_SQUAT_WITH_BODY_BAR ((FIT_SQUAT_EXERCISE_NAME)1) -#define FIT_SQUAT_EXERCISE_NAME_BACK_SQUATS ((FIT_SQUAT_EXERCISE_NAME)2) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BACK_SQUATS ((FIT_SQUAT_EXERCISE_NAME)3) -#define FIT_SQUAT_EXERCISE_NAME_BALANCING_SQUAT ((FIT_SQUAT_EXERCISE_NAME)4) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BALANCING_SQUAT ((FIT_SQUAT_EXERCISE_NAME)5) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_BACK_SQUAT ((FIT_SQUAT_EXERCISE_NAME)6) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_BOX_SQUAT ((FIT_SQUAT_EXERCISE_NAME)7) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_FRONT_SQUAT ((FIT_SQUAT_EXERCISE_NAME)8) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_HACK_SQUAT ((FIT_SQUAT_EXERCISE_NAME)9) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_HANG_SQUAT_SNATCH ((FIT_SQUAT_EXERCISE_NAME)10) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_LATERAL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)11) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_QUARTER_SQUAT ((FIT_SQUAT_EXERCISE_NAME)12) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SIFF_SQUAT ((FIT_SQUAT_EXERCISE_NAME)13) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SQUAT_SNATCH ((FIT_SQUAT_EXERCISE_NAME)14) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SQUAT_WITH_HEELS_RAISED ((FIT_SQUAT_EXERCISE_NAME)15) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_STEPOVER ((FIT_SQUAT_EXERCISE_NAME)16) -#define FIT_SQUAT_EXERCISE_NAME_BARBELL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)17) -#define FIT_SQUAT_EXERCISE_NAME_BENCH_SQUAT_WITH_ROTATIONAL_CHOP ((FIT_SQUAT_EXERCISE_NAME)18) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BENCH_SQUAT_WITH_ROTATIONAL_CHOP ((FIT_SQUAT_EXERCISE_NAME)19) -#define FIT_SQUAT_EXERCISE_NAME_BODY_WEIGHT_WALL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)20) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_WALL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)21) -#define FIT_SQUAT_EXERCISE_NAME_BOX_STEP_SQUAT ((FIT_SQUAT_EXERCISE_NAME)22) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BOX_STEP_SQUAT ((FIT_SQUAT_EXERCISE_NAME)23) -#define FIT_SQUAT_EXERCISE_NAME_BRACED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)24) -#define FIT_SQUAT_EXERCISE_NAME_CROSSED_ARM_BARBELL_FRONT_SQUAT ((FIT_SQUAT_EXERCISE_NAME)25) -#define FIT_SQUAT_EXERCISE_NAME_CROSSOVER_DUMBBELL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)26) -#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_FRONT_SQUAT ((FIT_SQUAT_EXERCISE_NAME)27) -#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SPLIT_SQUAT ((FIT_SQUAT_EXERCISE_NAME)28) -#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)29) -#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SQUAT_CLEAN ((FIT_SQUAT_EXERCISE_NAME)30) -#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_STEPOVER ((FIT_SQUAT_EXERCISE_NAME)31) -#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)32) -#define FIT_SQUAT_EXERCISE_NAME_ELEVATED_SINGLE_LEG_SQUAT ((FIT_SQUAT_EXERCISE_NAME)33) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_ELEVATED_SINGLE_LEG_SQUAT ((FIT_SQUAT_EXERCISE_NAME)34) -#define FIT_SQUAT_EXERCISE_NAME_FIGURE_FOUR_SQUATS ((FIT_SQUAT_EXERCISE_NAME)35) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_FIGURE_FOUR_SQUATS ((FIT_SQUAT_EXERCISE_NAME)36) -#define FIT_SQUAT_EXERCISE_NAME_GOBLET_SQUAT ((FIT_SQUAT_EXERCISE_NAME)37) -#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)38) -#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SWING_OVERHEAD ((FIT_SQUAT_EXERCISE_NAME)39) -#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SWING_WITH_FLIP_TO_SQUAT ((FIT_SQUAT_EXERCISE_NAME)40) -#define FIT_SQUAT_EXERCISE_NAME_LATERAL_DUMBBELL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)41) -#define FIT_SQUAT_EXERCISE_NAME_ONE_LEGGED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)42) -#define FIT_SQUAT_EXERCISE_NAME_OVERHEAD_DUMBBELL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)43) -#define FIT_SQUAT_EXERCISE_NAME_OVERHEAD_SQUAT ((FIT_SQUAT_EXERCISE_NAME)44) -#define FIT_SQUAT_EXERCISE_NAME_PARTIAL_SINGLE_LEG_SQUAT ((FIT_SQUAT_EXERCISE_NAME)45) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PARTIAL_SINGLE_LEG_SQUAT ((FIT_SQUAT_EXERCISE_NAME)46) -#define FIT_SQUAT_EXERCISE_NAME_PISTOL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)47) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PISTOL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)48) -#define FIT_SQUAT_EXERCISE_NAME_PLIE_SLIDES ((FIT_SQUAT_EXERCISE_NAME)49) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PLIE_SLIDES ((FIT_SQUAT_EXERCISE_NAME)50) -#define FIT_SQUAT_EXERCISE_NAME_PLIE_SQUAT ((FIT_SQUAT_EXERCISE_NAME)51) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PLIE_SQUAT ((FIT_SQUAT_EXERCISE_NAME)52) -#define FIT_SQUAT_EXERCISE_NAME_PRISONER_SQUAT ((FIT_SQUAT_EXERCISE_NAME)53) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PRISONER_SQUAT ((FIT_SQUAT_EXERCISE_NAME)54) -#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_BENCH_GET_UP ((FIT_SQUAT_EXERCISE_NAME)55) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_GET_UP ((FIT_SQUAT_EXERCISE_NAME)56) -#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_BENCH_SQUAT ((FIT_SQUAT_EXERCISE_NAME)57) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_SQUAT ((FIT_SQUAT_EXERCISE_NAME)58) -#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_SQUAT_ON_SWISS_BALL ((FIT_SQUAT_EXERCISE_NAME)59) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SQUAT_ON_SWISS_BALL ((FIT_SQUAT_EXERCISE_NAME)60) -#define FIT_SQUAT_EXERCISE_NAME_SQUAT ((FIT_SQUAT_EXERCISE_NAME)61) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)62) -#define FIT_SQUAT_EXERCISE_NAME_SQUATS_WITH_BAND ((FIT_SQUAT_EXERCISE_NAME)63) -#define FIT_SQUAT_EXERCISE_NAME_STAGGERED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)64) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_STAGGERED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)65) -#define FIT_SQUAT_EXERCISE_NAME_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)66) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)67) -#define FIT_SQUAT_EXERCISE_NAME_SUITCASE_SQUATS ((FIT_SQUAT_EXERCISE_NAME)68) -#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT ((FIT_SQUAT_EXERCISE_NAME)69) -#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_SLIDE_IN ((FIT_SQUAT_EXERCISE_NAME)70) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_SLIDE_IN ((FIT_SQUAT_EXERCISE_NAME)71) -#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_TO_HIGH_PULL ((FIT_SQUAT_EXERCISE_NAME)72) -#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_TO_STAND ((FIT_SQUAT_EXERCISE_NAME)73) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_TO_STAND ((FIT_SQUAT_EXERCISE_NAME)74) -#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_WITH_ROTATION ((FIT_SQUAT_EXERCISE_NAME)75) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_WITH_ROTATION ((FIT_SQUAT_EXERCISE_NAME)76) -#define FIT_SQUAT_EXERCISE_NAME_SWISS_BALL_BODY_WEIGHT_WALL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)77) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SWISS_BALL_WALL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)78) -#define FIT_SQUAT_EXERCISE_NAME_THRUSTERS ((FIT_SQUAT_EXERCISE_NAME)79) -#define FIT_SQUAT_EXERCISE_NAME_UNEVEN_SQUAT ((FIT_SQUAT_EXERCISE_NAME)80) -#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_UNEVEN_SQUAT ((FIT_SQUAT_EXERCISE_NAME)81) -#define FIT_SQUAT_EXERCISE_NAME_WAIST_SLIMMING_SQUAT ((FIT_SQUAT_EXERCISE_NAME)82) -#define FIT_SQUAT_EXERCISE_NAME_WALL_BALL ((FIT_SQUAT_EXERCISE_NAME)83) -#define FIT_SQUAT_EXERCISE_NAME_WIDE_STANCE_BARBELL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)84) -#define FIT_SQUAT_EXERCISE_NAME_WIDE_STANCE_GOBLET_SQUAT ((FIT_SQUAT_EXERCISE_NAME)85) -#define FIT_SQUAT_EXERCISE_NAME_ZERCHER_SQUAT ((FIT_SQUAT_EXERCISE_NAME)86) +#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_LATERAL_RAISE_EXERCISE_NAME)0) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_ALTERNATING_LATERAL_RAISE_WITH_STATIC_HOLD ((FIT_LATERAL_RAISE_EXERCISE_NAME)1) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_BAR_MUSCLE_UP ((FIT_LATERAL_RAISE_EXERCISE_NAME)2) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_BENT_OVER_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)3) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_CABLE_DIAGONAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)4) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_CABLE_FRONT_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)5) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_CALORIE_ROW ((FIT_LATERAL_RAISE_EXERCISE_NAME)6) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_COMBO_SHOULDER_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)7) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_DIAGONAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)8) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_DUMBBELL_V_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)9) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_FRONT_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)10) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_LEANING_DUMBBELL_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)11) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_LYING_DUMBBELL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)12) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_MUSCLE_UP ((FIT_LATERAL_RAISE_EXERCISE_NAME)13) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_ONE_ARM_CABLE_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)14) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_OVERHAND_GRIP_REAR_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)15) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_PLATE_RAISES ((FIT_LATERAL_RAISE_EXERCISE_NAME)16) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_RING_DIP ((FIT_LATERAL_RAISE_EXERCISE_NAME)17) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_RING_DIP ((FIT_LATERAL_RAISE_EXERCISE_NAME)18) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_RING_MUSCLE_UP ((FIT_LATERAL_RAISE_EXERCISE_NAME)19) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_RING_MUSCLE_UP ((FIT_LATERAL_RAISE_EXERCISE_NAME)20) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_ROPE_CLIMB ((FIT_LATERAL_RAISE_EXERCISE_NAME)21) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_ROPE_CLIMB ((FIT_LATERAL_RAISE_EXERCISE_NAME)22) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_SCAPTION ((FIT_LATERAL_RAISE_EXERCISE_NAME)23) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_SEATED_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)24) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_SEATED_REAR_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)25) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_SIDE_LYING_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)26) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_STANDING_LIFT ((FIT_LATERAL_RAISE_EXERCISE_NAME)27) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_SUSPENDED_ROW ((FIT_LATERAL_RAISE_EXERCISE_NAME)28) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_UNDERHAND_GRIP_REAR_LATERAL_RAISE ((FIT_LATERAL_RAISE_EXERCISE_NAME)29) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_WALL_SLIDE ((FIT_LATERAL_RAISE_EXERCISE_NAME)30) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_WEIGHTED_WALL_SLIDE ((FIT_LATERAL_RAISE_EXERCISE_NAME)31) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_ARM_CIRCLES ((FIT_LATERAL_RAISE_EXERCISE_NAME)32) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_SHAVING_THE_HEAD ((FIT_LATERAL_RAISE_EXERCISE_NAME)33) +#define FIT_LATERAL_RAISE_EXERCISE_NAME_COUNT 34 + +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_LEG_CURL_EXERCISE_NAME)0) +#define FIT_LEG_CURL_EXERCISE_NAME_WEIGHTED_LEG_CURL ((FIT_LEG_CURL_EXERCISE_NAME)1) +#define FIT_LEG_CURL_EXERCISE_NAME_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)2) +#define FIT_LEG_CURL_EXERCISE_NAME_SEATED_BARBELL_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)3) +#define FIT_LEG_CURL_EXERCISE_NAME_SINGLE_LEG_BARBELL_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)4) +#define FIT_LEG_CURL_EXERCISE_NAME_SINGLE_LEG_SLIDING_LEG_CURL ((FIT_LEG_CURL_EXERCISE_NAME)5) +#define FIT_LEG_CURL_EXERCISE_NAME_SLIDING_LEG_CURL ((FIT_LEG_CURL_EXERCISE_NAME)6) +#define FIT_LEG_CURL_EXERCISE_NAME_SPLIT_BARBELL_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)7) +#define FIT_LEG_CURL_EXERCISE_NAME_SPLIT_STANCE_EXTENSION ((FIT_LEG_CURL_EXERCISE_NAME)8) +#define FIT_LEG_CURL_EXERCISE_NAME_STAGGERED_STANCE_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)9) +#define FIT_LEG_CURL_EXERCISE_NAME_SWISS_BALL_HIP_RAISE_AND_LEG_CURL ((FIT_LEG_CURL_EXERCISE_NAME)10) +#define FIT_LEG_CURL_EXERCISE_NAME_ZERCHER_GOOD_MORNING ((FIT_LEG_CURL_EXERCISE_NAME)11) +#define FIT_LEG_CURL_EXERCISE_NAME_COUNT 12 + +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_LEG_RAISE_EXERCISE_NAME)0) +#define FIT_LEG_RAISE_EXERCISE_NAME_HANGING_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)1) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)2) +#define FIT_LEG_RAISE_EXERCISE_NAME_HANGING_SINGLE_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)3) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_SINGLE_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)4) +#define FIT_LEG_RAISE_EXERCISE_NAME_KETTLEBELL_LEG_RAISES ((FIT_LEG_RAISE_EXERCISE_NAME)5) +#define FIT_LEG_RAISE_EXERCISE_NAME_LEG_LOWERING_DRILL ((FIT_LEG_RAISE_EXERCISE_NAME)6) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LEG_LOWERING_DRILL ((FIT_LEG_RAISE_EXERCISE_NAME)7) +#define FIT_LEG_RAISE_EXERCISE_NAME_LYING_STRAIGHT_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)8) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LYING_STRAIGHT_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)9) +#define FIT_LEG_RAISE_EXERCISE_NAME_MEDICINE_BALL_LEG_DROPS ((FIT_LEG_RAISE_EXERCISE_NAME)10) +#define FIT_LEG_RAISE_EXERCISE_NAME_QUADRUPED_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)11) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_QUADRUPED_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)12) +#define FIT_LEG_RAISE_EXERCISE_NAME_REVERSE_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)13) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_LEG_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)14) +#define FIT_LEG_RAISE_EXERCISE_NAME_REVERSE_LEG_RAISE_ON_SWISS_BALL ((FIT_LEG_RAISE_EXERCISE_NAME)15) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_REVERSE_LEG_RAISE_ON_SWISS_BALL ((FIT_LEG_RAISE_EXERCISE_NAME)16) +#define FIT_LEG_RAISE_EXERCISE_NAME_SINGLE_LEG_LOWERING_DRILL ((FIT_LEG_RAISE_EXERCISE_NAME)17) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_LOWERING_DRILL ((FIT_LEG_RAISE_EXERCISE_NAME)18) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_HANGING_KNEE_RAISE ((FIT_LEG_RAISE_EXERCISE_NAME)19) +#define FIT_LEG_RAISE_EXERCISE_NAME_LATERAL_STEPOVER ((FIT_LEG_RAISE_EXERCISE_NAME)20) +#define FIT_LEG_RAISE_EXERCISE_NAME_WEIGHTED_LATERAL_STEPOVER ((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_LUNGE_EXERCISE_NAME)0) +#define FIT_LUNGE_EXERCISE_NAME_LUNGE_MATRIX ((FIT_LUNGE_EXERCISE_NAME)1) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_LUNGE_MATRIX ((FIT_LUNGE_EXERCISE_NAME)2) +#define FIT_LUNGE_EXERCISE_NAME_ALTERNATING_BARBELL_FORWARD_LUNGE ((FIT_LUNGE_EXERCISE_NAME)3) +#define FIT_LUNGE_EXERCISE_NAME_ALTERNATING_DUMBBELL_LUNGE_WITH_REACH ((FIT_LUNGE_EXERCISE_NAME)4) +#define FIT_LUNGE_EXERCISE_NAME_BACK_FOOT_ELEVATED_DUMBBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)5) +#define FIT_LUNGE_EXERCISE_NAME_BARBELL_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)6) +#define FIT_LUNGE_EXERCISE_NAME_BARBELL_BULGARIAN_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)7) +#define FIT_LUNGE_EXERCISE_NAME_BARBELL_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)8) +#define FIT_LUNGE_EXERCISE_NAME_BARBELL_FRONT_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)9) +#define FIT_LUNGE_EXERCISE_NAME_BARBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)10) +#define FIT_LUNGE_EXERCISE_NAME_BARBELL_REVERSE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)11) +#define FIT_LUNGE_EXERCISE_NAME_BARBELL_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)12) +#define FIT_LUNGE_EXERCISE_NAME_BARBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)13) +#define FIT_LUNGE_EXERCISE_NAME_CORE_CONTROL_REAR_LUNGE ((FIT_LUNGE_EXERCISE_NAME)14) +#define FIT_LUNGE_EXERCISE_NAME_DIAGONAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)15) +#define FIT_LUNGE_EXERCISE_NAME_DROP_LUNGE ((FIT_LUNGE_EXERCISE_NAME)16) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)17) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_BULGARIAN_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)18) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)19) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_DIAGONAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)20) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)21) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_LUNGE_AND_ROTATION ((FIT_LUNGE_EXERCISE_NAME)22) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_OVERHEAD_BULGARIAN_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)23) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_REVERSE_LUNGE_TO_HIGH_KNEE_AND_PRESS ((FIT_LUNGE_EXERCISE_NAME)24) +#define FIT_LUNGE_EXERCISE_NAME_DUMBBELL_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)25) +#define FIT_LUNGE_EXERCISE_NAME_ELEVATED_FRONT_FOOT_BARBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)26) +#define FIT_LUNGE_EXERCISE_NAME_FRONT_FOOT_ELEVATED_DUMBBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)27) +#define FIT_LUNGE_EXERCISE_NAME_GUNSLINGER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)28) +#define FIT_LUNGE_EXERCISE_NAME_LAWNMOWER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)29) +#define FIT_LUNGE_EXERCISE_NAME_LOW_LUNGE_WITH_ISOMETRIC_ADDUCTION ((FIT_LUNGE_EXERCISE_NAME)30) +#define FIT_LUNGE_EXERCISE_NAME_LOW_SIDE_TO_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)31) +#define FIT_LUNGE_EXERCISE_NAME_LUNGE ((FIT_LUNGE_EXERCISE_NAME)32) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_LUNGE ((FIT_LUNGE_EXERCISE_NAME)33) +#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_ARM_REACH ((FIT_LUNGE_EXERCISE_NAME)34) +#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_DIAGONAL_REACH ((FIT_LUNGE_EXERCISE_NAME)35) +#define FIT_LUNGE_EXERCISE_NAME_LUNGE_WITH_SIDE_BEND ((FIT_LUNGE_EXERCISE_NAME)36) +#define FIT_LUNGE_EXERCISE_NAME_OFFSET_DUMBBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)37) +#define FIT_LUNGE_EXERCISE_NAME_OFFSET_DUMBBELL_REVERSE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)38) +#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_BULGARIAN_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)39) +#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_DUMBBELL_REVERSE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)40) +#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_DUMBBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)41) +#define FIT_LUNGE_EXERCISE_NAME_OVERHEAD_LUNGE_WITH_ROTATION ((FIT_LUNGE_EXERCISE_NAME)42) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_BARBELL_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)43) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)44) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)45) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)46) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_DUMBBELL_DIAGONAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)47) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_LUNGE_WITH_REACH_BACK ((FIT_LUNGE_EXERCISE_NAME)48) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_LUNGE_WITH_REACH_BACK ((FIT_LUNGE_EXERCISE_NAME)49) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_LUNGE_WITH_TWIST_AND_OVERHEAD_REACH ((FIT_LUNGE_EXERCISE_NAME)50) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_LUNGE_WITH_TWIST_AND_OVERHEAD_REACH ((FIT_LUNGE_EXERCISE_NAME)51) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_SLIDING_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)52) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_SLIDING_BOX_LUNGE ((FIT_LUNGE_EXERCISE_NAME)53) +#define FIT_LUNGE_EXERCISE_NAME_REVERSE_SLIDING_LUNGE ((FIT_LUNGE_EXERCISE_NAME)54) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_REVERSE_SLIDING_LUNGE ((FIT_LUNGE_EXERCISE_NAME)55) +#define FIT_LUNGE_EXERCISE_NAME_RUNNERS_LUNGE_TO_BALANCE ((FIT_LUNGE_EXERCISE_NAME)56) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_RUNNERS_LUNGE_TO_BALANCE ((FIT_LUNGE_EXERCISE_NAME)57) +#define FIT_LUNGE_EXERCISE_NAME_SHIFTING_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)58) +#define FIT_LUNGE_EXERCISE_NAME_SIDE_AND_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)59) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_AND_CROSSOVER_LUNGE ((FIT_LUNGE_EXERCISE_NAME)60) +#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)61) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE ((FIT_LUNGE_EXERCISE_NAME)62) +#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_AND_PRESS ((FIT_LUNGE_EXERCISE_NAME)63) +#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_JUMP_OFF ((FIT_LUNGE_EXERCISE_NAME)64) +#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_SWEEP ((FIT_LUNGE_EXERCISE_NAME)65) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE_SWEEP ((FIT_LUNGE_EXERCISE_NAME)66) +#define FIT_LUNGE_EXERCISE_NAME_SIDE_LUNGE_TO_CROSSOVER_TAP ((FIT_LUNGE_EXERCISE_NAME)67) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_LUNGE_TO_CROSSOVER_TAP ((FIT_LUNGE_EXERCISE_NAME)68) +#define FIT_LUNGE_EXERCISE_NAME_SIDE_TO_SIDE_LUNGE_CHOPS ((FIT_LUNGE_EXERCISE_NAME)69) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_LUNGE_CHOPS ((FIT_LUNGE_EXERCISE_NAME)70) +#define FIT_LUNGE_EXERCISE_NAME_SIFF_JUMP_LUNGE ((FIT_LUNGE_EXERCISE_NAME)71) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SIFF_JUMP_LUNGE ((FIT_LUNGE_EXERCISE_NAME)72) +#define FIT_LUNGE_EXERCISE_NAME_SINGLE_ARM_REVERSE_LUNGE_AND_PRESS ((FIT_LUNGE_EXERCISE_NAME)73) +#define FIT_LUNGE_EXERCISE_NAME_SLIDING_LATERAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)74) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_SLIDING_LATERAL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)75) +#define FIT_LUNGE_EXERCISE_NAME_WALKING_BARBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)76) +#define FIT_LUNGE_EXERCISE_NAME_WALKING_DUMBBELL_LUNGE ((FIT_LUNGE_EXERCISE_NAME)77) +#define FIT_LUNGE_EXERCISE_NAME_WALKING_LUNGE ((FIT_LUNGE_EXERCISE_NAME)78) +#define FIT_LUNGE_EXERCISE_NAME_WEIGHTED_WALKING_LUNGE ((FIT_LUNGE_EXERCISE_NAME)79) +#define FIT_LUNGE_EXERCISE_NAME_WIDE_GRIP_OVERHEAD_BARBELL_SPLIT_SQUAT ((FIT_LUNGE_EXERCISE_NAME)80) +#define FIT_LUNGE_EXERCISE_NAME_COUNT 81 + +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_OLYMPIC_LIFT_EXERCISE_NAME)0) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_SQUAT_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)1) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_POWER_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)2) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_POWER_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)3) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SQUAT_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)4) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_CLEAN_AND_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)5) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_POWER_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)6) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HANG_PULL ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)7) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_HIGH_PULL ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)8) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)9) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_BARBELL_SPLIT_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)10) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)11) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_CLEAN ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)12) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_DUMBBELL_HANG_PULL ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)13) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_ONE_HAND_DUMBBELL_SPLIT_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)14) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_PUSH_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)15) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)16) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_HANG_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)17) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SINGLE_ARM_KETTLEBELL_SNATCH ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)18) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SPLIT_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)19) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_SQUAT_CLEAN_AND_JERK ((FIT_OLYMPIC_LIFT_EXERCISE_NAME)20) +#define FIT_OLYMPIC_LIFT_EXERCISE_NAME_COUNT 21 + +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_PLANK_EXERCISE_NAME)0) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_45_DEGREE_PLANK ((FIT_PLANK_EXERCISE_NAME)1) +#define FIT_PLANK_EXERCISE_NAME_90_DEGREE_STATIC_HOLD ((FIT_PLANK_EXERCISE_NAME)2) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_90_DEGREE_STATIC_HOLD ((FIT_PLANK_EXERCISE_NAME)3) +#define FIT_PLANK_EXERCISE_NAME_BEAR_CRAWL ((FIT_PLANK_EXERCISE_NAME)4) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_BEAR_CRAWL ((FIT_PLANK_EXERCISE_NAME)5) +#define FIT_PLANK_EXERCISE_NAME_CROSS_BODY_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)6) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_CROSS_BODY_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)7) +#define FIT_PLANK_EXERCISE_NAME_ELBOW_PLANK_PIKE_JACKS ((FIT_PLANK_EXERCISE_NAME)8) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELBOW_PLANK_PIKE_JACKS ((FIT_PLANK_EXERCISE_NAME)9) +#define FIT_PLANK_EXERCISE_NAME_ELEVATED_FEET_PLANK ((FIT_PLANK_EXERCISE_NAME)10) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_PLANK ((FIT_PLANK_EXERCISE_NAME)11) +#define FIT_PLANK_EXERCISE_NAME_ELEVATOR_ABS ((FIT_PLANK_EXERCISE_NAME)12) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ELEVATOR_ABS ((FIT_PLANK_EXERCISE_NAME)13) +#define FIT_PLANK_EXERCISE_NAME_EXTENDED_PLANK ((FIT_PLANK_EXERCISE_NAME)14) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_EXTENDED_PLANK ((FIT_PLANK_EXERCISE_NAME)15) +#define FIT_PLANK_EXERCISE_NAME_FULL_PLANK_PASSE_TWIST ((FIT_PLANK_EXERCISE_NAME)16) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_FULL_PLANK_PASSE_TWIST ((FIT_PLANK_EXERCISE_NAME)17) +#define FIT_PLANK_EXERCISE_NAME_INCHING_ELBOW_PLANK ((FIT_PLANK_EXERCISE_NAME)18) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_INCHING_ELBOW_PLANK ((FIT_PLANK_EXERCISE_NAME)19) +#define FIT_PLANK_EXERCISE_NAME_INCHWORM_TO_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)20) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_INCHWORM_TO_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)21) +#define FIT_PLANK_EXERCISE_NAME_KNEELING_PLANK ((FIT_PLANK_EXERCISE_NAME)22) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_KNEELING_PLANK ((FIT_PLANK_EXERCISE_NAME)23) +#define FIT_PLANK_EXERCISE_NAME_KNEELING_SIDE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)24) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_KNEELING_SIDE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)25) +#define FIT_PLANK_EXERCISE_NAME_LATERAL_ROLL ((FIT_PLANK_EXERCISE_NAME)26) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_LATERAL_ROLL ((FIT_PLANK_EXERCISE_NAME)27) +#define FIT_PLANK_EXERCISE_NAME_LYING_REVERSE_PLANK ((FIT_PLANK_EXERCISE_NAME)28) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_LYING_REVERSE_PLANK ((FIT_PLANK_EXERCISE_NAME)29) +#define FIT_PLANK_EXERCISE_NAME_MEDICINE_BALL_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)30) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MEDICINE_BALL_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)31) +#define FIT_PLANK_EXERCISE_NAME_MODIFIED_MOUNTAIN_CLIMBER_AND_EXTENSION ((FIT_PLANK_EXERCISE_NAME)32) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MODIFIED_MOUNTAIN_CLIMBER_AND_EXTENSION ((FIT_PLANK_EXERCISE_NAME)33) +#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)34) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER ((FIT_PLANK_EXERCISE_NAME)35) +#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_ON_SLIDING_DISCS ((FIT_PLANK_EXERCISE_NAME)36) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_ON_SLIDING_DISCS ((FIT_PLANK_EXERCISE_NAME)37) +#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_FEET_ON_BOSU_BALL ((FIT_PLANK_EXERCISE_NAME)38) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_FEET_ON_BOSU_BALL ((FIT_PLANK_EXERCISE_NAME)39) +#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_HANDS_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)40) +#define FIT_PLANK_EXERCISE_NAME_MOUNTAIN_CLIMBER_WITH_HANDS_ON_SWISS_BALL ((FIT_PLANK_EXERCISE_NAME)41) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_HANDS_ON_SWISS_BALL ((FIT_PLANK_EXERCISE_NAME)42) +#define FIT_PLANK_EXERCISE_NAME_PLANK ((FIT_PLANK_EXERCISE_NAME)43) +#define FIT_PLANK_EXERCISE_NAME_PLANK_JACKS_WITH_FEET_ON_SLIDING_DISCS ((FIT_PLANK_EXERCISE_NAME)44) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_JACKS_WITH_FEET_ON_SLIDING_DISCS ((FIT_PLANK_EXERCISE_NAME)45) +#define FIT_PLANK_EXERCISE_NAME_PLANK_KNEE_TWIST ((FIT_PLANK_EXERCISE_NAME)46) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_KNEE_TWIST ((FIT_PLANK_EXERCISE_NAME)47) +#define FIT_PLANK_EXERCISE_NAME_PLANK_PIKE_JUMPS ((FIT_PLANK_EXERCISE_NAME)48) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_PIKE_JUMPS ((FIT_PLANK_EXERCISE_NAME)49) +#define FIT_PLANK_EXERCISE_NAME_PLANK_PIKES ((FIT_PLANK_EXERCISE_NAME)50) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_PIKES ((FIT_PLANK_EXERCISE_NAME)51) +#define FIT_PLANK_EXERCISE_NAME_PLANK_TO_STAND_UP ((FIT_PLANK_EXERCISE_NAME)52) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_TO_STAND_UP ((FIT_PLANK_EXERCISE_NAME)53) +#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_ARM_RAISE ((FIT_PLANK_EXERCISE_NAME)54) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_ARM_RAISE ((FIT_PLANK_EXERCISE_NAME)55) +#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_KNEE_TO_ELBOW ((FIT_PLANK_EXERCISE_NAME)56) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_KNEE_TO_ELBOW ((FIT_PLANK_EXERCISE_NAME)57) +#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_OBLIQUE_CRUNCH ((FIT_PLANK_EXERCISE_NAME)58) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK_WITH_OBLIQUE_CRUNCH ((FIT_PLANK_EXERCISE_NAME)59) +#define FIT_PLANK_EXERCISE_NAME_PLYOMETRIC_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)60) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLYOMETRIC_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)61) +#define FIT_PLANK_EXERCISE_NAME_ROLLING_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)62) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_ROLLING_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)63) +#define FIT_PLANK_EXERCISE_NAME_SIDE_KICK_PLANK ((FIT_PLANK_EXERCISE_NAME)64) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_KICK_PLANK ((FIT_PLANK_EXERCISE_NAME)65) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)66) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)67) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_AND_ROW ((FIT_PLANK_EXERCISE_NAME)68) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_AND_ROW ((FIT_PLANK_EXERCISE_NAME)69) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_LIFT ((FIT_PLANK_EXERCISE_NAME)70) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_LIFT ((FIT_PLANK_EXERCISE_NAME)71) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_ELBOW_ON_BOSU_BALL ((FIT_PLANK_EXERCISE_NAME)72) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_ELBOW_ON_BOSU_BALL ((FIT_PLANK_EXERCISE_NAME)73) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_FEET_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)74) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_FEET_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)75) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_KNEE_CIRCLE ((FIT_PLANK_EXERCISE_NAME)76) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_KNEE_CIRCLE ((FIT_PLANK_EXERCISE_NAME)77) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_KNEE_TUCK ((FIT_PLANK_EXERCISE_NAME)78) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_KNEE_TUCK ((FIT_PLANK_EXERCISE_NAME)79) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)80) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)81) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_WITH_REACH_UNDER ((FIT_PLANK_EXERCISE_NAME)82) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SIDE_PLANK_WITH_REACH_UNDER ((FIT_PLANK_EXERCISE_NAME)83) +#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_ELEVATED_FEET_PLANK ((FIT_PLANK_EXERCISE_NAME)84) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_ELEVATED_FEET_PLANK ((FIT_PLANK_EXERCISE_NAME)85) +#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_FLEX_AND_EXTEND ((FIT_PLANK_EXERCISE_NAME)86) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_FLEX_AND_EXTEND ((FIT_PLANK_EXERCISE_NAME)87) +#define FIT_PLANK_EXERCISE_NAME_SINGLE_LEG_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)88) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)89) +#define FIT_PLANK_EXERCISE_NAME_SPIDERMAN_PLANK ((FIT_PLANK_EXERCISE_NAME)90) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SPIDERMAN_PLANK ((FIT_PLANK_EXERCISE_NAME)91) +#define FIT_PLANK_EXERCISE_NAME_STRAIGHT_ARM_PLANK ((FIT_PLANK_EXERCISE_NAME)92) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_STRAIGHT_ARM_PLANK ((FIT_PLANK_EXERCISE_NAME)93) +#define FIT_PLANK_EXERCISE_NAME_STRAIGHT_ARM_PLANK_WITH_SHOULDER_TOUCH ((FIT_PLANK_EXERCISE_NAME)94) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_STRAIGHT_ARM_PLANK_WITH_SHOULDER_TOUCH ((FIT_PLANK_EXERCISE_NAME)95) +#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK ((FIT_PLANK_EXERCISE_NAME)96) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK ((FIT_PLANK_EXERCISE_NAME)97) +#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)98) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)99) +#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_LEG_LIFT_AND_HOLD ((FIT_PLANK_EXERCISE_NAME)100) +#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PLANK_WITH_FEET_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)101) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_WITH_FEET_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)102) +#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_PRONE_JACKKNIFE ((FIT_PLANK_EXERCISE_NAME)103) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PRONE_JACKKNIFE ((FIT_PLANK_EXERCISE_NAME)104) +#define FIT_PLANK_EXERCISE_NAME_SWISS_BALL_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)105) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)106) +#define FIT_PLANK_EXERCISE_NAME_THREE_WAY_PLANK ((FIT_PLANK_EXERCISE_NAME)107) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_THREE_WAY_PLANK ((FIT_PLANK_EXERCISE_NAME)108) +#define FIT_PLANK_EXERCISE_NAME_TOWEL_PLANK_AND_KNEE_IN ((FIT_PLANK_EXERCISE_NAME)109) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TOWEL_PLANK_AND_KNEE_IN ((FIT_PLANK_EXERCISE_NAME)110) +#define FIT_PLANK_EXERCISE_NAME_T_STABILIZATION ((FIT_PLANK_EXERCISE_NAME)111) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_T_STABILIZATION ((FIT_PLANK_EXERCISE_NAME)112) +#define FIT_PLANK_EXERCISE_NAME_TURKISH_GET_UP_TO_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)113) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TURKISH_GET_UP_TO_SIDE_PLANK ((FIT_PLANK_EXERCISE_NAME)114) +#define FIT_PLANK_EXERCISE_NAME_TWO_POINT_PLANK ((FIT_PLANK_EXERCISE_NAME)115) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_TWO_POINT_PLANK ((FIT_PLANK_EXERCISE_NAME)116) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_PLANK ((FIT_PLANK_EXERCISE_NAME)117) +#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_DIAGONAL_ARM_LIFT ((FIT_PLANK_EXERCISE_NAME)118) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_DIAGONAL_ARM_LIFT ((FIT_PLANK_EXERCISE_NAME)119) +#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_DIAGONAL_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)120) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_DIAGONAL_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)121) +#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)122) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)123) +#define FIT_PLANK_EXERCISE_NAME_WIDE_STANCE_PLANK_WITH_OPPOSITE_ARM_AND_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)124) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_MOUNTAIN_CLIMBER_WITH_HANDS_ON_BENCH ((FIT_PLANK_EXERCISE_NAME)125) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PLANK_LEG_LIFT_AND_HOLD ((FIT_PLANK_EXERCISE_NAME)126) +#define FIT_PLANK_EXERCISE_NAME_WEIGHTED_WIDE_STANCE_PLANK_WITH_OPPOSITE_ARM_AND_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)127) +#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_FEET_ON_SWISS_BALL ((FIT_PLANK_EXERCISE_NAME)128) +#define FIT_PLANK_EXERCISE_NAME_SIDE_PLANK_TO_PLANK_WITH_REACH_UNDER ((FIT_PLANK_EXERCISE_NAME)129) +#define FIT_PLANK_EXERCISE_NAME_BRIDGE_WITH_GLUTE_LOWER_LIFT ((FIT_PLANK_EXERCISE_NAME)130) +#define FIT_PLANK_EXERCISE_NAME_BRIDGE_ONE_LEG_BRIDGE ((FIT_PLANK_EXERCISE_NAME)131) +#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_ARM_VARIATIONS ((FIT_PLANK_EXERCISE_NAME)132) +#define FIT_PLANK_EXERCISE_NAME_PLANK_WITH_LEG_LIFT ((FIT_PLANK_EXERCISE_NAME)133) +#define FIT_PLANK_EXERCISE_NAME_REVERSE_PLANK_WITH_LEG_PULL ((FIT_PLANK_EXERCISE_NAME)134) +#define FIT_PLANK_EXERCISE_NAME_COUNT 135 + +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_PLYO_EXERCISE_NAME)0) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_ALTERNATING_JUMP_LUNGE ((FIT_PLYO_EXERCISE_NAME)1) +#define FIT_PLYO_EXERCISE_NAME_BARBELL_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)2) +#define FIT_PLYO_EXERCISE_NAME_BODY_WEIGHT_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)3) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)4) +#define FIT_PLYO_EXERCISE_NAME_CROSS_KNEE_STRIKE ((FIT_PLYO_EXERCISE_NAME)5) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_CROSS_KNEE_STRIKE ((FIT_PLYO_EXERCISE_NAME)6) +#define FIT_PLYO_EXERCISE_NAME_DEPTH_JUMP ((FIT_PLYO_EXERCISE_NAME)7) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_DEPTH_JUMP ((FIT_PLYO_EXERCISE_NAME)8) +#define FIT_PLYO_EXERCISE_NAME_DUMBBELL_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)9) +#define FIT_PLYO_EXERCISE_NAME_DUMBBELL_SPLIT_JUMP ((FIT_PLYO_EXERCISE_NAME)10) +#define FIT_PLYO_EXERCISE_NAME_FRONT_KNEE_STRIKE ((FIT_PLYO_EXERCISE_NAME)11) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_FRONT_KNEE_STRIKE ((FIT_PLYO_EXERCISE_NAME)12) +#define FIT_PLYO_EXERCISE_NAME_HIGH_BOX_JUMP ((FIT_PLYO_EXERCISE_NAME)13) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_HIGH_BOX_JUMP ((FIT_PLYO_EXERCISE_NAME)14) +#define FIT_PLYO_EXERCISE_NAME_ISOMETRIC_EXPLOSIVE_BODY_WEIGHT_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)15) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_ISOMETRIC_EXPLOSIVE_JUMP_SQUAT ((FIT_PLYO_EXERCISE_NAME)16) +#define FIT_PLYO_EXERCISE_NAME_LATERAL_LEAP_AND_HOP ((FIT_PLYO_EXERCISE_NAME)17) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_LEAP_AND_HOP ((FIT_PLYO_EXERCISE_NAME)18) +#define FIT_PLYO_EXERCISE_NAME_LATERAL_PLYO_SQUATS ((FIT_PLYO_EXERCISE_NAME)19) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_PLYO_SQUATS ((FIT_PLYO_EXERCISE_NAME)20) +#define FIT_PLYO_EXERCISE_NAME_LATERAL_SLIDE ((FIT_PLYO_EXERCISE_NAME)21) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_LATERAL_SLIDE ((FIT_PLYO_EXERCISE_NAME)22) +#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_OVERHEAD_THROWS ((FIT_PLYO_EXERCISE_NAME)23) +#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_SIDE_THROW ((FIT_PLYO_EXERCISE_NAME)24) +#define FIT_PLYO_EXERCISE_NAME_MEDICINE_BALL_SLAM ((FIT_PLYO_EXERCISE_NAME)25) +#define FIT_PLYO_EXERCISE_NAME_SIDE_TO_SIDE_MEDICINE_BALL_THROWS ((FIT_PLYO_EXERCISE_NAME)26) +#define FIT_PLYO_EXERCISE_NAME_SIDE_TO_SIDE_SHUFFLE_JUMP ((FIT_PLYO_EXERCISE_NAME)27) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SIDE_TO_SIDE_SHUFFLE_JUMP ((FIT_PLYO_EXERCISE_NAME)28) +#define FIT_PLYO_EXERCISE_NAME_SQUAT_JUMP_ONTO_BOX ((FIT_PLYO_EXERCISE_NAME)29) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SQUAT_JUMP_ONTO_BOX ((FIT_PLYO_EXERCISE_NAME)30) +#define FIT_PLYO_EXERCISE_NAME_SQUAT_JUMPS_IN_AND_OUT ((FIT_PLYO_EXERCISE_NAME)31) +#define FIT_PLYO_EXERCISE_NAME_WEIGHTED_SQUAT_JUMPS_IN_AND_OUT ((FIT_PLYO_EXERCISE_NAME)32) +#define FIT_PLYO_EXERCISE_NAME_COUNT 33 + +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_PULL_UP_EXERCISE_NAME)0) +#define FIT_PULL_UP_EXERCISE_NAME_30_DEGREE_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)1) +#define FIT_PULL_UP_EXERCISE_NAME_BAND_ASSISTED_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)2) +#define FIT_PULL_UP_EXERCISE_NAME_CLOSE_GRIP_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)3) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_CLOSE_GRIP_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)4) +#define FIT_PULL_UP_EXERCISE_NAME_CLOSE_GRIP_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)5) +#define FIT_PULL_UP_EXERCISE_NAME_CROSSOVER_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)6) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_CROSSOVER_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)7) +#define FIT_PULL_UP_EXERCISE_NAME_EZ_BAR_PULLOVER ((FIT_PULL_UP_EXERCISE_NAME)8) +#define FIT_PULL_UP_EXERCISE_NAME_HANGING_HURDLE ((FIT_PULL_UP_EXERCISE_NAME)9) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_HANGING_HURDLE ((FIT_PULL_UP_EXERCISE_NAME)10) +#define FIT_PULL_UP_EXERCISE_NAME_KNEELING_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)11) +#define FIT_PULL_UP_EXERCISE_NAME_KNEELING_UNDERHAND_GRIP_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)12) +#define FIT_PULL_UP_EXERCISE_NAME_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)13) +#define FIT_PULL_UP_EXERCISE_NAME_MIXED_GRIP_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)14) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_MIXED_GRIP_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)15) +#define FIT_PULL_UP_EXERCISE_NAME_MIXED_GRIP_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)16) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_MIXED_GRIP_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)17) +#define FIT_PULL_UP_EXERCISE_NAME_REVERSE_GRIP_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)18) +#define FIT_PULL_UP_EXERCISE_NAME_STANDING_CABLE_PULLOVER ((FIT_PULL_UP_EXERCISE_NAME)19) +#define FIT_PULL_UP_EXERCISE_NAME_STRAIGHT_ARM_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)20) +#define FIT_PULL_UP_EXERCISE_NAME_SWISS_BALL_EZ_BAR_PULLOVER ((FIT_PULL_UP_EXERCISE_NAME)21) +#define FIT_PULL_UP_EXERCISE_NAME_TOWEL_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)22) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_TOWEL_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)23) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)24) +#define FIT_PULL_UP_EXERCISE_NAME_WIDE_GRIP_LAT_PULLDOWN ((FIT_PULL_UP_EXERCISE_NAME)25) +#define FIT_PULL_UP_EXERCISE_NAME_WIDE_GRIP_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)26) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_WIDE_GRIP_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)27) +#define FIT_PULL_UP_EXERCISE_NAME_BURPEE_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)28) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_BURPEE_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)29) +#define FIT_PULL_UP_EXERCISE_NAME_JUMPING_PULL_UPS ((FIT_PULL_UP_EXERCISE_NAME)30) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_JUMPING_PULL_UPS ((FIT_PULL_UP_EXERCISE_NAME)31) +#define FIT_PULL_UP_EXERCISE_NAME_KIPPING_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)32) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_KIPPING_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)33) +#define FIT_PULL_UP_EXERCISE_NAME_L_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)34) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_L_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)35) +#define FIT_PULL_UP_EXERCISE_NAME_SUSPENDED_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)36) +#define FIT_PULL_UP_EXERCISE_NAME_WEIGHTED_SUSPENDED_CHIN_UP ((FIT_PULL_UP_EXERCISE_NAME)37) +#define FIT_PULL_UP_EXERCISE_NAME_PULL_UP ((FIT_PULL_UP_EXERCISE_NAME)38) +#define FIT_PULL_UP_EXERCISE_NAME_COUNT 39 + +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_PUSH_UP_EXERCISE_NAME)0) +#define FIT_PUSH_UP_EXERCISE_NAME_ALTERNATING_STAGGERED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)1) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_STAGGERED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)2) +#define FIT_PUSH_UP_EXERCISE_NAME_ALTERNATING_HANDS_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)3) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_HANDS_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)4) +#define FIT_PUSH_UP_EXERCISE_NAME_BOSU_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)5) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_BOSU_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)6) +#define FIT_PUSH_UP_EXERCISE_NAME_CLAPPING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)7) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLAPPING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)8) +#define FIT_PUSH_UP_EXERCISE_NAME_CLOSE_GRIP_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)9) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLOSE_GRIP_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)10) +#define FIT_PUSH_UP_EXERCISE_NAME_CLOSE_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)11) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_CLOSE_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)12) +#define FIT_PUSH_UP_EXERCISE_NAME_DECLINE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)13) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_DECLINE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)14) +#define FIT_PUSH_UP_EXERCISE_NAME_DIAMOND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)15) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_DIAMOND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)16) +#define FIT_PUSH_UP_EXERCISE_NAME_EXPLOSIVE_CROSSOVER_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)17) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_EXPLOSIVE_CROSSOVER_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)18) +#define FIT_PUSH_UP_EXERCISE_NAME_EXPLOSIVE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)19) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_EXPLOSIVE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)20) +#define FIT_PUSH_UP_EXERCISE_NAME_FEET_ELEVATED_SIDE_TO_SIDE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)21) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_FEET_ELEVATED_SIDE_TO_SIDE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)22) +#define FIT_PUSH_UP_EXERCISE_NAME_HAND_RELEASE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)23) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_HAND_RELEASE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)24) +#define FIT_PUSH_UP_EXERCISE_NAME_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)25) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)26) +#define FIT_PUSH_UP_EXERCISE_NAME_INCLINE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)27) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_INCLINE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)28) +#define FIT_PUSH_UP_EXERCISE_NAME_ISOMETRIC_EXPLOSIVE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)29) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ISOMETRIC_EXPLOSIVE_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)30) +#define FIT_PUSH_UP_EXERCISE_NAME_JUDO_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)31) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_JUDO_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)32) +#define FIT_PUSH_UP_EXERCISE_NAME_KNEELING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)33) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_KNEELING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)34) +#define FIT_PUSH_UP_EXERCISE_NAME_MEDICINE_BALL_CHEST_PASS ((FIT_PUSH_UP_EXERCISE_NAME)35) +#define FIT_PUSH_UP_EXERCISE_NAME_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)36) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)37) +#define FIT_PUSH_UP_EXERCISE_NAME_ONE_ARM_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)38) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_ONE_ARM_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)39) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)40) +#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_AND_ROW ((FIT_PUSH_UP_EXERCISE_NAME)41) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_AND_ROW ((FIT_PUSH_UP_EXERCISE_NAME)42) +#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_PLUS ((FIT_PUSH_UP_EXERCISE_NAME)43) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_PLUS ((FIT_PUSH_UP_EXERCISE_NAME)44) +#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_WITH_FEET_ON_SWISS_BALL ((FIT_PUSH_UP_EXERCISE_NAME)45) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_WITH_FEET_ON_SWISS_BALL ((FIT_PUSH_UP_EXERCISE_NAME)46) +#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP_WITH_ONE_HAND_ON_MEDICINE_BALL ((FIT_PUSH_UP_EXERCISE_NAME)47) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PUSH_UP_WITH_ONE_HAND_ON_MEDICINE_BALL ((FIT_PUSH_UP_EXERCISE_NAME)48) +#define FIT_PUSH_UP_EXERCISE_NAME_SHOULDER_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)49) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SHOULDER_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)50) +#define FIT_PUSH_UP_EXERCISE_NAME_SINGLE_ARM_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)51) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SINGLE_ARM_MEDICINE_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)52) +#define FIT_PUSH_UP_EXERCISE_NAME_SPIDERMAN_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)53) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SPIDERMAN_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)54) +#define FIT_PUSH_UP_EXERCISE_NAME_STACKED_FEET_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)55) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_STACKED_FEET_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)56) +#define FIT_PUSH_UP_EXERCISE_NAME_STAGGERED_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)57) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_STAGGERED_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)58) +#define FIT_PUSH_UP_EXERCISE_NAME_SUSPENDED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)59) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SUSPENDED_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)60) +#define FIT_PUSH_UP_EXERCISE_NAME_SWISS_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)61) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)62) +#define FIT_PUSH_UP_EXERCISE_NAME_SWISS_BALL_PUSH_UP_PLUS ((FIT_PUSH_UP_EXERCISE_NAME)63) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_SWISS_BALL_PUSH_UP_PLUS ((FIT_PUSH_UP_EXERCISE_NAME)64) +#define FIT_PUSH_UP_EXERCISE_NAME_T_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)65) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_T_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)66) +#define FIT_PUSH_UP_EXERCISE_NAME_TRIPLE_STOP_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)67) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_TRIPLE_STOP_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)68) +#define FIT_PUSH_UP_EXERCISE_NAME_WIDE_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)69) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_WIDE_HANDS_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)70) +#define FIT_PUSH_UP_EXERCISE_NAME_PARALLETTE_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)71) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_PARALLETTE_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)72) +#define FIT_PUSH_UP_EXERCISE_NAME_RING_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)73) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_RING_HANDSTAND_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)74) +#define FIT_PUSH_UP_EXERCISE_NAME_RING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)75) +#define FIT_PUSH_UP_EXERCISE_NAME_WEIGHTED_RING_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)76) +#define FIT_PUSH_UP_EXERCISE_NAME_PUSH_UP ((FIT_PUSH_UP_EXERCISE_NAME)77) +#define FIT_PUSH_UP_EXERCISE_NAME_PILATES_PUSHUP ((FIT_PUSH_UP_EXERCISE_NAME)78) +#define FIT_PUSH_UP_EXERCISE_NAME_COUNT 79 + +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_ROW_EXERCISE_NAME)0) +#define FIT_ROW_EXERCISE_NAME_CABLE_ROW_STANDING ((FIT_ROW_EXERCISE_NAME)1) +#define FIT_ROW_EXERCISE_NAME_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)2) +#define FIT_ROW_EXERCISE_NAME_ELEVATED_FEET_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)3) +#define FIT_ROW_EXERCISE_NAME_WEIGHTED_ELEVATED_FEET_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)4) +#define FIT_ROW_EXERCISE_NAME_FACE_PULL ((FIT_ROW_EXERCISE_NAME)5) +#define FIT_ROW_EXERCISE_NAME_FACE_PULL_WITH_EXTERNAL_ROTATION ((FIT_ROW_EXERCISE_NAME)6) +#define FIT_ROW_EXERCISE_NAME_INVERTED_ROW_WITH_FEET_ON_SWISS_BALL ((FIT_ROW_EXERCISE_NAME)7) +#define FIT_ROW_EXERCISE_NAME_WEIGHTED_INVERTED_ROW_WITH_FEET_ON_SWISS_BALL ((FIT_ROW_EXERCISE_NAME)8) +#define FIT_ROW_EXERCISE_NAME_KETTLEBELL_ROW ((FIT_ROW_EXERCISE_NAME)9) +#define FIT_ROW_EXERCISE_NAME_MODIFIED_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)10) +#define FIT_ROW_EXERCISE_NAME_WEIGHTED_MODIFIED_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)11) +#define FIT_ROW_EXERCISE_NAME_NEUTRAL_GRIP_ALTERNATING_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)12) +#define FIT_ROW_EXERCISE_NAME_ONE_ARM_BENT_OVER_ROW ((FIT_ROW_EXERCISE_NAME)13) +#define FIT_ROW_EXERCISE_NAME_ONE_LEGGED_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)14) +#define FIT_ROW_EXERCISE_NAME_RENEGADE_ROW ((FIT_ROW_EXERCISE_NAME)15) +#define FIT_ROW_EXERCISE_NAME_REVERSE_GRIP_BARBELL_ROW ((FIT_ROW_EXERCISE_NAME)16) +#define FIT_ROW_EXERCISE_NAME_ROPE_HANDLE_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)17) +#define FIT_ROW_EXERCISE_NAME_SEATED_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)18) +#define FIT_ROW_EXERCISE_NAME_SEATED_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)19) +#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)20) +#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_CABLE_ROW_AND_ROTATION ((FIT_ROW_EXERCISE_NAME)21) +#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)22) +#define FIT_ROW_EXERCISE_NAME_WEIGHTED_SINGLE_ARM_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)23) +#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_NEUTRAL_GRIP_DUMBBELL_ROW ((FIT_ROW_EXERCISE_NAME)24) +#define FIT_ROW_EXERCISE_NAME_SINGLE_ARM_NEUTRAL_GRIP_DUMBBELL_ROW_AND_ROTATION ((FIT_ROW_EXERCISE_NAME)25) +#define FIT_ROW_EXERCISE_NAME_SUSPENDED_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)26) +#define FIT_ROW_EXERCISE_NAME_WEIGHTED_SUSPENDED_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)27) +#define FIT_ROW_EXERCISE_NAME_T_BAR_ROW ((FIT_ROW_EXERCISE_NAME)28) +#define FIT_ROW_EXERCISE_NAME_TOWEL_GRIP_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)29) +#define FIT_ROW_EXERCISE_NAME_WEIGHTED_TOWEL_GRIP_INVERTED_ROW ((FIT_ROW_EXERCISE_NAME)30) +#define FIT_ROW_EXERCISE_NAME_UNDERHAND_GRIP_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)31) +#define FIT_ROW_EXERCISE_NAME_V_GRIP_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)32) +#define FIT_ROW_EXERCISE_NAME_WIDE_GRIP_SEATED_CABLE_ROW ((FIT_ROW_EXERCISE_NAME)33) +#define FIT_ROW_EXERCISE_NAME_COUNT 34 + +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_SHOULDER_PRESS_EXERCISE_NAME)0) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_ARNOLD_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)1) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_FRONT_SQUAT_TO_PUSH_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)2) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_PUSH_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)3) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_BARBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)4) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DEAD_CURL_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)5) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_ALTERNATING_SHOULDER_PRESS_AND_TWIST ((FIT_SHOULDER_PRESS_EXERCISE_NAME)6) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_HAMMER_CURL_TO_LUNGE_TO_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)7) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_DUMBBELL_PUSH_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)8) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_FLOOR_INVERTED_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)9) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHTED_FLOOR_INVERTED_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)10) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_INVERTED_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)11) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHTED_INVERTED_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)12) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_ONE_ARM_PUSH_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)13) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_OVERHEAD_BARBELL_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)14) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_OVERHEAD_DUMBBELL_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)15) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SEATED_BARBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)16) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SEATED_DUMBBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)17) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)18) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SINGLE_ARM_STEP_UP_AND_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)19) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SMITH_MACHINE_OVERHEAD_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)20) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SPLIT_STANCE_HAMMER_CURL_TO_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)21) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_SWISS_BALL_DUMBBELL_SHOULDER_PRESS ((FIT_SHOULDER_PRESS_EXERCISE_NAME)22) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_WEIGHT_PLATE_FRONT_RAISE ((FIT_SHOULDER_PRESS_EXERCISE_NAME)23) +#define FIT_SHOULDER_PRESS_EXERCISE_NAME_COUNT 24 + +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_SHOULDER_STABILITY_EXERCISE_NAME)0) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BAND_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)1) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BAND_INTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)2) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_BENT_ARM_LATERAL_RAISE_AND_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)3) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_CABLE_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)4) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_DUMBBELL_FACE_PULL_WITH_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)5) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)6) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)7) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)8) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)9) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_FLOOR_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)10) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_FLOOR_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)11) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)12) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)13) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_L_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)14) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_L_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)15) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)16) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)17) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_W_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)18) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_W_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)19) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_INCLINE_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)20) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_INCLINE_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)21) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_LYING_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)22) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SEATED_DUMBBELL_EXTERNAL_ROTATION ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)23) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_STANDING_L_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)24) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)25) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_I_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)26) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)27) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_T_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)28) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_W_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)29) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_W_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)30) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_SWISS_BALL_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)31) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_WEIGHTED_SWISS_BALL_Y_RAISE ((FIT_SHOULDER_STABILITY_EXERCISE_NAME)32) +#define FIT_SHOULDER_STABILITY_EXERCISE_NAME_COUNT 33 + +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_SHRUG_EXERCISE_NAME)0) +#define FIT_SHRUG_EXERCISE_NAME_BARBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)1) +#define FIT_SHRUG_EXERCISE_NAME_BARBELL_UPRIGHT_ROW ((FIT_SHRUG_EXERCISE_NAME)2) +#define FIT_SHRUG_EXERCISE_NAME_BEHIND_THE_BACK_SMITH_MACHINE_SHRUG ((FIT_SHRUG_EXERCISE_NAME)3) +#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_JUMP_SHRUG ((FIT_SHRUG_EXERCISE_NAME)4) +#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)5) +#define FIT_SHRUG_EXERCISE_NAME_DUMBBELL_UPRIGHT_ROW ((FIT_SHRUG_EXERCISE_NAME)6) +#define FIT_SHRUG_EXERCISE_NAME_INCLINE_DUMBBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)7) +#define FIT_SHRUG_EXERCISE_NAME_OVERHEAD_BARBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)8) +#define FIT_SHRUG_EXERCISE_NAME_OVERHEAD_DUMBBELL_SHRUG ((FIT_SHRUG_EXERCISE_NAME)9) +#define FIT_SHRUG_EXERCISE_NAME_SCAPTION_AND_SHRUG ((FIT_SHRUG_EXERCISE_NAME)10) +#define FIT_SHRUG_EXERCISE_NAME_SCAPULAR_RETRACTION ((FIT_SHRUG_EXERCISE_NAME)11) +#define FIT_SHRUG_EXERCISE_NAME_SERRATUS_CHAIR_SHRUG ((FIT_SHRUG_EXERCISE_NAME)12) +#define FIT_SHRUG_EXERCISE_NAME_WEIGHTED_SERRATUS_CHAIR_SHRUG ((FIT_SHRUG_EXERCISE_NAME)13) +#define FIT_SHRUG_EXERCISE_NAME_SERRATUS_SHRUG ((FIT_SHRUG_EXERCISE_NAME)14) +#define FIT_SHRUG_EXERCISE_NAME_WEIGHTED_SERRATUS_SHRUG ((FIT_SHRUG_EXERCISE_NAME)15) +#define FIT_SHRUG_EXERCISE_NAME_WIDE_GRIP_JUMP_SHRUG ((FIT_SHRUG_EXERCISE_NAME)16) +#define FIT_SHRUG_EXERCISE_NAME_COUNT 17 + +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_SIT_UP_EXERCISE_NAME)0) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_ALTERNATING_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)1) +#define FIT_SIT_UP_EXERCISE_NAME_BENT_KNEE_V_UP ((FIT_SIT_UP_EXERCISE_NAME)2) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_BENT_KNEE_V_UP ((FIT_SIT_UP_EXERCISE_NAME)3) +#define FIT_SIT_UP_EXERCISE_NAME_BUTTERFLY_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)4) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_BUTTERFLY_SITUP ((FIT_SIT_UP_EXERCISE_NAME)5) +#define FIT_SIT_UP_EXERCISE_NAME_CROSS_PUNCH_ROLL_UP ((FIT_SIT_UP_EXERCISE_NAME)6) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_CROSS_PUNCH_ROLL_UP ((FIT_SIT_UP_EXERCISE_NAME)7) +#define FIT_SIT_UP_EXERCISE_NAME_CROSSED_ARMS_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)8) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_CROSSED_ARMS_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)9) +#define FIT_SIT_UP_EXERCISE_NAME_GET_UP_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)10) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_GET_UP_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)11) +#define FIT_SIT_UP_EXERCISE_NAME_HOVERING_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)12) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_HOVERING_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)13) +#define FIT_SIT_UP_EXERCISE_NAME_KETTLEBELL_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)14) +#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_ALTERNATING_V_UP ((FIT_SIT_UP_EXERCISE_NAME)15) +#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)16) +#define FIT_SIT_UP_EXERCISE_NAME_MEDICINE_BALL_V_UP ((FIT_SIT_UP_EXERCISE_NAME)17) +#define FIT_SIT_UP_EXERCISE_NAME_MODIFIED_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)18) +#define FIT_SIT_UP_EXERCISE_NAME_NEGATIVE_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)19) +#define FIT_SIT_UP_EXERCISE_NAME_ONE_ARM_FULL_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)20) +#define FIT_SIT_UP_EXERCISE_NAME_RECLINING_CIRCLE ((FIT_SIT_UP_EXERCISE_NAME)21) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_RECLINING_CIRCLE ((FIT_SIT_UP_EXERCISE_NAME)22) +#define FIT_SIT_UP_EXERCISE_NAME_REVERSE_CURL_UP ((FIT_SIT_UP_EXERCISE_NAME)23) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_REVERSE_CURL_UP ((FIT_SIT_UP_EXERCISE_NAME)24) +#define FIT_SIT_UP_EXERCISE_NAME_SINGLE_LEG_SWISS_BALL_JACKKNIFE ((FIT_SIT_UP_EXERCISE_NAME)25) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SWISS_BALL_JACKKNIFE ((FIT_SIT_UP_EXERCISE_NAME)26) +#define FIT_SIT_UP_EXERCISE_NAME_THE_TEASER ((FIT_SIT_UP_EXERCISE_NAME)27) +#define FIT_SIT_UP_EXERCISE_NAME_THE_TEASER_WEIGHTED ((FIT_SIT_UP_EXERCISE_NAME)28) +#define FIT_SIT_UP_EXERCISE_NAME_THREE_PART_ROLL_DOWN ((FIT_SIT_UP_EXERCISE_NAME)29) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_THREE_PART_ROLL_DOWN ((FIT_SIT_UP_EXERCISE_NAME)30) +#define FIT_SIT_UP_EXERCISE_NAME_V_UP ((FIT_SIT_UP_EXERCISE_NAME)31) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_V_UP ((FIT_SIT_UP_EXERCISE_NAME)32) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_RUSSIAN_TWIST_ON_SWISS_BALL ((FIT_SIT_UP_EXERCISE_NAME)33) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)34) +#define FIT_SIT_UP_EXERCISE_NAME_X_ABS ((FIT_SIT_UP_EXERCISE_NAME)35) +#define FIT_SIT_UP_EXERCISE_NAME_WEIGHTED_X_ABS ((FIT_SIT_UP_EXERCISE_NAME)36) +#define FIT_SIT_UP_EXERCISE_NAME_SIT_UP ((FIT_SIT_UP_EXERCISE_NAME)37) +#define FIT_SIT_UP_EXERCISE_NAME_COUNT 38 + +typedef FIT_UINT16 FIT_SQUAT_EXERCISE_NAME; +#define FIT_SQUAT_EXERCISE_NAME_INVALID FIT_UINT16_INVALID +#define FIT_SQUAT_EXERCISE_NAME_LEG_PRESS ((FIT_SQUAT_EXERCISE_NAME)0) +#define FIT_SQUAT_EXERCISE_NAME_BACK_SQUAT_WITH_BODY_BAR ((FIT_SQUAT_EXERCISE_NAME)1) +#define FIT_SQUAT_EXERCISE_NAME_BACK_SQUATS ((FIT_SQUAT_EXERCISE_NAME)2) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BACK_SQUATS ((FIT_SQUAT_EXERCISE_NAME)3) +#define FIT_SQUAT_EXERCISE_NAME_BALANCING_SQUAT ((FIT_SQUAT_EXERCISE_NAME)4) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BALANCING_SQUAT ((FIT_SQUAT_EXERCISE_NAME)5) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_BACK_SQUAT ((FIT_SQUAT_EXERCISE_NAME)6) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_BOX_SQUAT ((FIT_SQUAT_EXERCISE_NAME)7) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_FRONT_SQUAT ((FIT_SQUAT_EXERCISE_NAME)8) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_HACK_SQUAT ((FIT_SQUAT_EXERCISE_NAME)9) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_HANG_SQUAT_SNATCH ((FIT_SQUAT_EXERCISE_NAME)10) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_LATERAL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)11) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_QUARTER_SQUAT ((FIT_SQUAT_EXERCISE_NAME)12) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SIFF_SQUAT ((FIT_SQUAT_EXERCISE_NAME)13) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SQUAT_SNATCH ((FIT_SQUAT_EXERCISE_NAME)14) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_SQUAT_WITH_HEELS_RAISED ((FIT_SQUAT_EXERCISE_NAME)15) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_STEPOVER ((FIT_SQUAT_EXERCISE_NAME)16) +#define FIT_SQUAT_EXERCISE_NAME_BARBELL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)17) +#define FIT_SQUAT_EXERCISE_NAME_BENCH_SQUAT_WITH_ROTATIONAL_CHOP ((FIT_SQUAT_EXERCISE_NAME)18) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BENCH_SQUAT_WITH_ROTATIONAL_CHOP ((FIT_SQUAT_EXERCISE_NAME)19) +#define FIT_SQUAT_EXERCISE_NAME_BODY_WEIGHT_WALL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)20) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_WALL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)21) +#define FIT_SQUAT_EXERCISE_NAME_BOX_STEP_SQUAT ((FIT_SQUAT_EXERCISE_NAME)22) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_BOX_STEP_SQUAT ((FIT_SQUAT_EXERCISE_NAME)23) +#define FIT_SQUAT_EXERCISE_NAME_BRACED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)24) +#define FIT_SQUAT_EXERCISE_NAME_CROSSED_ARM_BARBELL_FRONT_SQUAT ((FIT_SQUAT_EXERCISE_NAME)25) +#define FIT_SQUAT_EXERCISE_NAME_CROSSOVER_DUMBBELL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)26) +#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_FRONT_SQUAT ((FIT_SQUAT_EXERCISE_NAME)27) +#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SPLIT_SQUAT ((FIT_SQUAT_EXERCISE_NAME)28) +#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)29) +#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_SQUAT_CLEAN ((FIT_SQUAT_EXERCISE_NAME)30) +#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_STEPOVER ((FIT_SQUAT_EXERCISE_NAME)31) +#define FIT_SQUAT_EXERCISE_NAME_DUMBBELL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)32) +#define FIT_SQUAT_EXERCISE_NAME_ELEVATED_SINGLE_LEG_SQUAT ((FIT_SQUAT_EXERCISE_NAME)33) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_ELEVATED_SINGLE_LEG_SQUAT ((FIT_SQUAT_EXERCISE_NAME)34) +#define FIT_SQUAT_EXERCISE_NAME_FIGURE_FOUR_SQUATS ((FIT_SQUAT_EXERCISE_NAME)35) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_FIGURE_FOUR_SQUATS ((FIT_SQUAT_EXERCISE_NAME)36) +#define FIT_SQUAT_EXERCISE_NAME_GOBLET_SQUAT ((FIT_SQUAT_EXERCISE_NAME)37) +#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)38) +#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SWING_OVERHEAD ((FIT_SQUAT_EXERCISE_NAME)39) +#define FIT_SQUAT_EXERCISE_NAME_KETTLEBELL_SWING_WITH_FLIP_TO_SQUAT ((FIT_SQUAT_EXERCISE_NAME)40) +#define FIT_SQUAT_EXERCISE_NAME_LATERAL_DUMBBELL_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)41) +#define FIT_SQUAT_EXERCISE_NAME_ONE_LEGGED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)42) +#define FIT_SQUAT_EXERCISE_NAME_OVERHEAD_DUMBBELL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)43) +#define FIT_SQUAT_EXERCISE_NAME_OVERHEAD_SQUAT ((FIT_SQUAT_EXERCISE_NAME)44) +#define FIT_SQUAT_EXERCISE_NAME_PARTIAL_SINGLE_LEG_SQUAT ((FIT_SQUAT_EXERCISE_NAME)45) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PARTIAL_SINGLE_LEG_SQUAT ((FIT_SQUAT_EXERCISE_NAME)46) +#define FIT_SQUAT_EXERCISE_NAME_PISTOL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)47) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PISTOL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)48) +#define FIT_SQUAT_EXERCISE_NAME_PLIE_SLIDES ((FIT_SQUAT_EXERCISE_NAME)49) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PLIE_SLIDES ((FIT_SQUAT_EXERCISE_NAME)50) +#define FIT_SQUAT_EXERCISE_NAME_PLIE_SQUAT ((FIT_SQUAT_EXERCISE_NAME)51) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PLIE_SQUAT ((FIT_SQUAT_EXERCISE_NAME)52) +#define FIT_SQUAT_EXERCISE_NAME_PRISONER_SQUAT ((FIT_SQUAT_EXERCISE_NAME)53) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_PRISONER_SQUAT ((FIT_SQUAT_EXERCISE_NAME)54) +#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_BENCH_GET_UP ((FIT_SQUAT_EXERCISE_NAME)55) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_GET_UP ((FIT_SQUAT_EXERCISE_NAME)56) +#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_BENCH_SQUAT ((FIT_SQUAT_EXERCISE_NAME)57) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_SQUAT ((FIT_SQUAT_EXERCISE_NAME)58) +#define FIT_SQUAT_EXERCISE_NAME_SINGLE_LEG_SQUAT_ON_SWISS_BALL ((FIT_SQUAT_EXERCISE_NAME)59) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_SQUAT_ON_SWISS_BALL ((FIT_SQUAT_EXERCISE_NAME)60) +#define FIT_SQUAT_EXERCISE_NAME_SQUAT ((FIT_SQUAT_EXERCISE_NAME)61) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)62) +#define FIT_SQUAT_EXERCISE_NAME_SQUATS_WITH_BAND ((FIT_SQUAT_EXERCISE_NAME)63) +#define FIT_SQUAT_EXERCISE_NAME_STAGGERED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)64) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_STAGGERED_SQUAT ((FIT_SQUAT_EXERCISE_NAME)65) +#define FIT_SQUAT_EXERCISE_NAME_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)66) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_STEP_UP ((FIT_SQUAT_EXERCISE_NAME)67) +#define FIT_SQUAT_EXERCISE_NAME_SUITCASE_SQUATS ((FIT_SQUAT_EXERCISE_NAME)68) +#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT ((FIT_SQUAT_EXERCISE_NAME)69) +#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_SLIDE_IN ((FIT_SQUAT_EXERCISE_NAME)70) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_SLIDE_IN ((FIT_SQUAT_EXERCISE_NAME)71) +#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_TO_HIGH_PULL ((FIT_SQUAT_EXERCISE_NAME)72) +#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_TO_STAND ((FIT_SQUAT_EXERCISE_NAME)73) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_TO_STAND ((FIT_SQUAT_EXERCISE_NAME)74) +#define FIT_SQUAT_EXERCISE_NAME_SUMO_SQUAT_WITH_ROTATION ((FIT_SQUAT_EXERCISE_NAME)75) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SUMO_SQUAT_WITH_ROTATION ((FIT_SQUAT_EXERCISE_NAME)76) +#define FIT_SQUAT_EXERCISE_NAME_SWISS_BALL_BODY_WEIGHT_WALL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)77) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_SWISS_BALL_WALL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)78) +#define FIT_SQUAT_EXERCISE_NAME_THRUSTERS ((FIT_SQUAT_EXERCISE_NAME)79) +#define FIT_SQUAT_EXERCISE_NAME_UNEVEN_SQUAT ((FIT_SQUAT_EXERCISE_NAME)80) +#define FIT_SQUAT_EXERCISE_NAME_WEIGHTED_UNEVEN_SQUAT ((FIT_SQUAT_EXERCISE_NAME)81) +#define FIT_SQUAT_EXERCISE_NAME_WAIST_SLIMMING_SQUAT ((FIT_SQUAT_EXERCISE_NAME)82) +#define FIT_SQUAT_EXERCISE_NAME_WALL_BALL ((FIT_SQUAT_EXERCISE_NAME)83) +#define FIT_SQUAT_EXERCISE_NAME_WIDE_STANCE_BARBELL_SQUAT ((FIT_SQUAT_EXERCISE_NAME)84) +#define FIT_SQUAT_EXERCISE_NAME_WIDE_STANCE_GOBLET_SQUAT ((FIT_SQUAT_EXERCISE_NAME)85) +#define FIT_SQUAT_EXERCISE_NAME_ZERCHER_SQUAT ((FIT_SQUAT_EXERCISE_NAME)86) #define FIT_SQUAT_EXERCISE_NAME_KBS_OVERHEAD ((FIT_SQUAT_EXERCISE_NAME)87) // Deprecated do not use -#define FIT_SQUAT_EXERCISE_NAME_SQUAT_AND_SIDE_KICK ((FIT_SQUAT_EXERCISE_NAME)88) -#define FIT_SQUAT_EXERCISE_NAME_SQUAT_JUMPS_IN_N_OUT ((FIT_SQUAT_EXERCISE_NAME)89) -#define FIT_SQUAT_EXERCISE_NAME_PILATES_PLIE_SQUATS_PARALLEL_TURNED_OUT_FLAT_AND_HEELS ((FIT_SQUAT_EXERCISE_NAME)90) -#define FIT_SQUAT_EXERCISE_NAME_RELEVE_STRAIGHT_LEG_AND_KNEE_BENT_WITH_ONE_LEG_VARIATION ((FIT_SQUAT_EXERCISE_NAME)91) -#define FIT_SQUAT_EXERCISE_NAME_COUNT 92 - -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_TOTAL_BODY_EXERCISE_NAME)0) -#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_BURPEE ((FIT_TOTAL_BODY_EXERCISE_NAME)1) -#define FIT_TOTAL_BODY_EXERCISE_NAME_BURPEE_BOX_JUMP ((FIT_TOTAL_BODY_EXERCISE_NAME)2) -#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_BURPEE_BOX_JUMP ((FIT_TOTAL_BODY_EXERCISE_NAME)3) -#define FIT_TOTAL_BODY_EXERCISE_NAME_HIGH_PULL_BURPEE ((FIT_TOTAL_BODY_EXERCISE_NAME)4) -#define FIT_TOTAL_BODY_EXERCISE_NAME_MAN_MAKERS ((FIT_TOTAL_BODY_EXERCISE_NAME)5) -#define FIT_TOTAL_BODY_EXERCISE_NAME_ONE_ARM_BURPEE ((FIT_TOTAL_BODY_EXERCISE_NAME)6) -#define FIT_TOTAL_BODY_EXERCISE_NAME_SQUAT_THRUSTS ((FIT_TOTAL_BODY_EXERCISE_NAME)7) -#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_SQUAT_THRUSTS ((FIT_TOTAL_BODY_EXERCISE_NAME)8) -#define FIT_TOTAL_BODY_EXERCISE_NAME_SQUAT_PLANK_PUSH_UP ((FIT_TOTAL_BODY_EXERCISE_NAME)9) -#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_SQUAT_PLANK_PUSH_UP ((FIT_TOTAL_BODY_EXERCISE_NAME)10) -#define FIT_TOTAL_BODY_EXERCISE_NAME_STANDING_T_ROTATION_BALANCE ((FIT_TOTAL_BODY_EXERCISE_NAME)11) -#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_STANDING_T_ROTATION_BALANCE ((FIT_TOTAL_BODY_EXERCISE_NAME)12) -#define FIT_TOTAL_BODY_EXERCISE_NAME_COUNT 13 - -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_TRICEPS_EXTENSION_EXERCISE_NAME)0) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_BENCH_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)1) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_BODY_WEIGHT_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)2) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_KICKBACK ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)3) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)4) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)5) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_DUMBBELL_KICKBACK ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)6) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_DUMBBELL_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)7) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)8) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_INCLINE_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)9) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_INCLINE_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)10) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_INCLINE_EZ_BAR_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)11) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_DUMBBELL_PULLOVER_TO_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)12) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_EZ_BAR_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)13) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_TRICEPS_EXTENSION_TO_CLOSE_GRIP_BENCH_PRESS ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)14) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_OVERHEAD_DUMBBELL_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)15) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_RECLINING_TRICEPS_PRESS ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)16) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_REVERSE_GRIP_PRESSDOWN ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)17) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_REVERSE_GRIP_TRICEPS_PRESSDOWN ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)18) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_ROPE_PRESSDOWN ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)19) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_BARBELL_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)20) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)21) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)22) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_SINGLE_ARM_OVERHEAD_DUMBBELL_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)23) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)24) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_DUMBBELL_SEATED_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)25) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_LEG_BENCH_DIP_AND_KICK ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)26) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_DIP_AND_KICK ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)27) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_LEG_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)28) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)29) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_STATIC_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)30) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SUSPENDED_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)31) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SUSPENDED_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)32) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_DUMBBELL_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)33) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_EZ_BAR_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)34) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)35) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TABLETOP_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)36) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_TABLETOP_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)37) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TRICEPS_EXTENSION_ON_FLOOR ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)38) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TRICEPS_PRESSDOWN ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)39) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)40) -#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_COUNT 41 - -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_WARM_UP_EXERCISE_NAME)0) -#define FIT_WARM_UP_EXERCISE_NAME_NECK_TILTS ((FIT_WARM_UP_EXERCISE_NAME)1) -#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_CIRCLES ((FIT_WARM_UP_EXERCISE_NAME)2) -#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_DORSIFLEXION_WITH_BAND ((FIT_WARM_UP_EXERCISE_NAME)3) -#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_INTERNAL_ROTATION ((FIT_WARM_UP_EXERCISE_NAME)4) -#define FIT_WARM_UP_EXERCISE_NAME_ARM_CIRCLES ((FIT_WARM_UP_EXERCISE_NAME)5) -#define FIT_WARM_UP_EXERCISE_NAME_BENT_OVER_REACH_TO_SKY ((FIT_WARM_UP_EXERCISE_NAME)6) -#define FIT_WARM_UP_EXERCISE_NAME_CAT_CAMEL ((FIT_WARM_UP_EXERCISE_NAME)7) -#define FIT_WARM_UP_EXERCISE_NAME_ELBOW_TO_FOOT_LUNGE ((FIT_WARM_UP_EXERCISE_NAME)8) -#define FIT_WARM_UP_EXERCISE_NAME_FORWARD_AND_BACKWARD_LEG_SWINGS ((FIT_WARM_UP_EXERCISE_NAME)9) -#define FIT_WARM_UP_EXERCISE_NAME_GROINERS ((FIT_WARM_UP_EXERCISE_NAME)10) -#define FIT_WARM_UP_EXERCISE_NAME_INVERTED_HAMSTRING_STRETCH ((FIT_WARM_UP_EXERCISE_NAME)11) -#define FIT_WARM_UP_EXERCISE_NAME_LATERAL_DUCK_UNDER ((FIT_WARM_UP_EXERCISE_NAME)12) -#define FIT_WARM_UP_EXERCISE_NAME_NECK_ROTATIONS ((FIT_WARM_UP_EXERCISE_NAME)13) -#define FIT_WARM_UP_EXERCISE_NAME_OPPOSITE_ARM_AND_LEG_BALANCE ((FIT_WARM_UP_EXERCISE_NAME)14) -#define FIT_WARM_UP_EXERCISE_NAME_REACH_ROLL_AND_LIFT ((FIT_WARM_UP_EXERCISE_NAME)15) +#define FIT_SQUAT_EXERCISE_NAME_SQUAT_AND_SIDE_KICK ((FIT_SQUAT_EXERCISE_NAME)88) +#define FIT_SQUAT_EXERCISE_NAME_SQUAT_JUMPS_IN_N_OUT ((FIT_SQUAT_EXERCISE_NAME)89) +#define FIT_SQUAT_EXERCISE_NAME_PILATES_PLIE_SQUATS_PARALLEL_TURNED_OUT_FLAT_AND_HEELS ((FIT_SQUAT_EXERCISE_NAME)90) +#define FIT_SQUAT_EXERCISE_NAME_RELEVE_STRAIGHT_LEG_AND_KNEE_BENT_WITH_ONE_LEG_VARIATION ((FIT_SQUAT_EXERCISE_NAME)91) +#define FIT_SQUAT_EXERCISE_NAME_COUNT 92 + +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_TOTAL_BODY_EXERCISE_NAME)0) +#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_BURPEE ((FIT_TOTAL_BODY_EXERCISE_NAME)1) +#define FIT_TOTAL_BODY_EXERCISE_NAME_BURPEE_BOX_JUMP ((FIT_TOTAL_BODY_EXERCISE_NAME)2) +#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_BURPEE_BOX_JUMP ((FIT_TOTAL_BODY_EXERCISE_NAME)3) +#define FIT_TOTAL_BODY_EXERCISE_NAME_HIGH_PULL_BURPEE ((FIT_TOTAL_BODY_EXERCISE_NAME)4) +#define FIT_TOTAL_BODY_EXERCISE_NAME_MAN_MAKERS ((FIT_TOTAL_BODY_EXERCISE_NAME)5) +#define FIT_TOTAL_BODY_EXERCISE_NAME_ONE_ARM_BURPEE ((FIT_TOTAL_BODY_EXERCISE_NAME)6) +#define FIT_TOTAL_BODY_EXERCISE_NAME_SQUAT_THRUSTS ((FIT_TOTAL_BODY_EXERCISE_NAME)7) +#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_SQUAT_THRUSTS ((FIT_TOTAL_BODY_EXERCISE_NAME)8) +#define FIT_TOTAL_BODY_EXERCISE_NAME_SQUAT_PLANK_PUSH_UP ((FIT_TOTAL_BODY_EXERCISE_NAME)9) +#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_SQUAT_PLANK_PUSH_UP ((FIT_TOTAL_BODY_EXERCISE_NAME)10) +#define FIT_TOTAL_BODY_EXERCISE_NAME_STANDING_T_ROTATION_BALANCE ((FIT_TOTAL_BODY_EXERCISE_NAME)11) +#define FIT_TOTAL_BODY_EXERCISE_NAME_WEIGHTED_STANDING_T_ROTATION_BALANCE ((FIT_TOTAL_BODY_EXERCISE_NAME)12) +#define FIT_TOTAL_BODY_EXERCISE_NAME_COUNT 13 + +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_TRICEPS_EXTENSION_EXERCISE_NAME)0) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_BENCH_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)1) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_BODY_WEIGHT_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)2) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_KICKBACK ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)3) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)4) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_CABLE_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)5) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_DUMBBELL_KICKBACK ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)6) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_DUMBBELL_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)7) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)8) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_INCLINE_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)9) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_INCLINE_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)10) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_INCLINE_EZ_BAR_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)11) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_DUMBBELL_PULLOVER_TO_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)12) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_EZ_BAR_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)13) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_LYING_TRICEPS_EXTENSION_TO_CLOSE_GRIP_BENCH_PRESS ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)14) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_OVERHEAD_DUMBBELL_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)15) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_RECLINING_TRICEPS_PRESS ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)16) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_REVERSE_GRIP_PRESSDOWN ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)17) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_REVERSE_GRIP_TRICEPS_PRESSDOWN ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)18) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_ROPE_PRESSDOWN ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)19) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_BARBELL_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)20) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)21) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)22) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SEATED_SINGLE_ARM_OVERHEAD_DUMBBELL_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)23) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_ARM_DUMBBELL_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)24) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_DUMBBELL_SEATED_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)25) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_LEG_BENCH_DIP_AND_KICK ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)26) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_BENCH_DIP_AND_KICK ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)27) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SINGLE_LEG_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)28) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SINGLE_LEG_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)29) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_STATIC_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)30) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SUSPENDED_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)31) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_SUSPENDED_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)32) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_DUMBBELL_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)33) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_EZ_BAR_LYING_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)34) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_SWISS_BALL_EZ_BAR_OVERHEAD_TRICEPS_EXTENSION ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)35) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TABLETOP_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)36) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_TABLETOP_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)37) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TRICEPS_EXTENSION_ON_FLOOR ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)38) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_TRICEPS_PRESSDOWN ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)39) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_WEIGHTED_DIP ((FIT_TRICEPS_EXTENSION_EXERCISE_NAME)40) +#define FIT_TRICEPS_EXTENSION_EXERCISE_NAME_COUNT 41 + +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_WARM_UP_EXERCISE_NAME)0) +#define FIT_WARM_UP_EXERCISE_NAME_NECK_TILTS ((FIT_WARM_UP_EXERCISE_NAME)1) +#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_CIRCLES ((FIT_WARM_UP_EXERCISE_NAME)2) +#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_DORSIFLEXION_WITH_BAND ((FIT_WARM_UP_EXERCISE_NAME)3) +#define FIT_WARM_UP_EXERCISE_NAME_ANKLE_INTERNAL_ROTATION ((FIT_WARM_UP_EXERCISE_NAME)4) +#define FIT_WARM_UP_EXERCISE_NAME_ARM_CIRCLES ((FIT_WARM_UP_EXERCISE_NAME)5) +#define FIT_WARM_UP_EXERCISE_NAME_BENT_OVER_REACH_TO_SKY ((FIT_WARM_UP_EXERCISE_NAME)6) +#define FIT_WARM_UP_EXERCISE_NAME_CAT_CAMEL ((FIT_WARM_UP_EXERCISE_NAME)7) +#define FIT_WARM_UP_EXERCISE_NAME_ELBOW_TO_FOOT_LUNGE ((FIT_WARM_UP_EXERCISE_NAME)8) +#define FIT_WARM_UP_EXERCISE_NAME_FORWARD_AND_BACKWARD_LEG_SWINGS ((FIT_WARM_UP_EXERCISE_NAME)9) +#define FIT_WARM_UP_EXERCISE_NAME_GROINERS ((FIT_WARM_UP_EXERCISE_NAME)10) +#define FIT_WARM_UP_EXERCISE_NAME_INVERTED_HAMSTRING_STRETCH ((FIT_WARM_UP_EXERCISE_NAME)11) +#define FIT_WARM_UP_EXERCISE_NAME_LATERAL_DUCK_UNDER ((FIT_WARM_UP_EXERCISE_NAME)12) +#define FIT_WARM_UP_EXERCISE_NAME_NECK_ROTATIONS ((FIT_WARM_UP_EXERCISE_NAME)13) +#define FIT_WARM_UP_EXERCISE_NAME_OPPOSITE_ARM_AND_LEG_BALANCE ((FIT_WARM_UP_EXERCISE_NAME)14) +#define FIT_WARM_UP_EXERCISE_NAME_REACH_ROLL_AND_LIFT ((FIT_WARM_UP_EXERCISE_NAME)15) #define FIT_WARM_UP_EXERCISE_NAME_SCORPION ((FIT_WARM_UP_EXERCISE_NAME)16) // Deprecated do not use -#define FIT_WARM_UP_EXERCISE_NAME_SHOULDER_CIRCLES ((FIT_WARM_UP_EXERCISE_NAME)17) -#define FIT_WARM_UP_EXERCISE_NAME_SIDE_TO_SIDE_LEG_SWINGS ((FIT_WARM_UP_EXERCISE_NAME)18) -#define FIT_WARM_UP_EXERCISE_NAME_SLEEPER_STRETCH ((FIT_WARM_UP_EXERCISE_NAME)19) -#define FIT_WARM_UP_EXERCISE_NAME_SLIDE_OUT ((FIT_WARM_UP_EXERCISE_NAME)20) -#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_HIP_CROSSOVER ((FIT_WARM_UP_EXERCISE_NAME)21) -#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_REACH_ROLL_AND_LIFT ((FIT_WARM_UP_EXERCISE_NAME)22) -#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_WINDSHIELD_WIPERS ((FIT_WARM_UP_EXERCISE_NAME)23) -#define FIT_WARM_UP_EXERCISE_NAME_THORACIC_ROTATION ((FIT_WARM_UP_EXERCISE_NAME)24) -#define FIT_WARM_UP_EXERCISE_NAME_WALKING_HIGH_KICKS ((FIT_WARM_UP_EXERCISE_NAME)25) -#define FIT_WARM_UP_EXERCISE_NAME_WALKING_HIGH_KNEES ((FIT_WARM_UP_EXERCISE_NAME)26) -#define FIT_WARM_UP_EXERCISE_NAME_WALKING_KNEE_HUGS ((FIT_WARM_UP_EXERCISE_NAME)27) -#define FIT_WARM_UP_EXERCISE_NAME_WALKING_LEG_CRADLES ((FIT_WARM_UP_EXERCISE_NAME)28) -#define FIT_WARM_UP_EXERCISE_NAME_WALKOUT ((FIT_WARM_UP_EXERCISE_NAME)29) -#define FIT_WARM_UP_EXERCISE_NAME_WALKOUT_FROM_PUSH_UP_POSITION ((FIT_WARM_UP_EXERCISE_NAME)30) -#define FIT_WARM_UP_EXERCISE_NAME_COUNT 31 - -typedef FIT_UINT16 FIT_RUN_EXERCISE_NAME; -#define FIT_RUN_EXERCISE_NAME_INVALID FIT_UINT16_INVALID -#define FIT_RUN_EXERCISE_NAME_RUN ((FIT_RUN_EXERCISE_NAME)0) -#define FIT_RUN_EXERCISE_NAME_WALK ((FIT_RUN_EXERCISE_NAME)1) -#define FIT_RUN_EXERCISE_NAME_JOG ((FIT_RUN_EXERCISE_NAME)2) -#define FIT_RUN_EXERCISE_NAME_SPRINT ((FIT_RUN_EXERCISE_NAME)3) -#define FIT_RUN_EXERCISE_NAME_COUNT 4 - -typedef FIT_ENUM FIT_WATER_TYPE; -#define FIT_WATER_TYPE_INVALID FIT_ENUM_INVALID -#define FIT_WATER_TYPE_FRESH ((FIT_WATER_TYPE)0) -#define FIT_WATER_TYPE_SALT ((FIT_WATER_TYPE)1) -#define FIT_WATER_TYPE_EN13319 ((FIT_WATER_TYPE)2) -#define FIT_WATER_TYPE_CUSTOM ((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_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_DIVE_GAS_STATUS)0) -#define FIT_DIVE_GAS_STATUS_ENABLED ((FIT_DIVE_GAS_STATUS)1) -#define FIT_DIVE_GAS_STATUS_BACKUP_ONLY ((FIT_DIVE_GAS_STATUS)2) -#define FIT_DIVE_GAS_STATUS_COUNT 3 - -typedef FIT_ENUM FIT_DIVE_ALARM_TYPE; -#define FIT_DIVE_ALARM_TYPE_INVALID FIT_ENUM_INVALID -#define FIT_DIVE_ALARM_TYPE_DEPTH ((FIT_DIVE_ALARM_TYPE)0) -#define FIT_DIVE_ALARM_TYPE_TIME ((FIT_DIVE_ALARM_TYPE)1) -#define FIT_DIVE_ALARM_TYPE_COUNT 2 - -typedef FIT_ENUM FIT_DIVE_BACKLIGHT_MODE; -#define FIT_DIVE_BACKLIGHT_MODE_INVALID FIT_ENUM_INVALID -#define FIT_DIVE_BACKLIGHT_MODE_AT_DEPTH ((FIT_DIVE_BACKLIGHT_MODE)0) -#define FIT_DIVE_BACKLIGHT_MODE_ALWAYS_ON ((FIT_DIVE_BACKLIGHT_MODE)1) -#define FIT_DIVE_BACKLIGHT_MODE_COUNT 2 - -typedef FIT_UINT16 FIT_FAVERO_PRODUCT; -#define FIT_FAVERO_PRODUCT_INVALID FIT_UINT16_INVALID -#define FIT_FAVERO_PRODUCT_ASSIOMA_UNO ((FIT_FAVERO_PRODUCT)10) -#define FIT_FAVERO_PRODUCT_ASSIOMA_DUO ((FIT_FAVERO_PRODUCT)12) -#define FIT_FAVERO_PRODUCT_COUNT 2 - -typedef FIT_ENUM FIT_CLIMB_PRO_EVENT; -#define FIT_CLIMB_PRO_EVENT_INVALID FIT_ENUM_INVALID -#define FIT_CLIMB_PRO_EVENT_APPROACH ((FIT_CLIMB_PRO_EVENT)0) -#define FIT_CLIMB_PRO_EVENT_START ((FIT_CLIMB_PRO_EVENT)1) -#define FIT_CLIMB_PRO_EVENT_COMPLETE ((FIT_CLIMB_PRO_EVENT)2) -#define FIT_CLIMB_PRO_EVENT_COUNT 3 - -typedef FIT_ENUM FIT_TAP_SENSITIVITY; -#define FIT_TAP_SENSITIVITY_INVALID FIT_ENUM_INVALID -#define FIT_TAP_SENSITIVITY_HIGH ((FIT_TAP_SENSITIVITY)0) -#define FIT_TAP_SENSITIVITY_MEDIUM ((FIT_TAP_SENSITIVITY)1) -#define FIT_TAP_SENSITIVITY_LOW ((FIT_TAP_SENSITIVITY)2) -#define FIT_TAP_SENSITIVITY_COUNT 3 - +#define FIT_WARM_UP_EXERCISE_NAME_SHOULDER_CIRCLES ((FIT_WARM_UP_EXERCISE_NAME)17) +#define FIT_WARM_UP_EXERCISE_NAME_SIDE_TO_SIDE_LEG_SWINGS ((FIT_WARM_UP_EXERCISE_NAME)18) +#define FIT_WARM_UP_EXERCISE_NAME_SLEEPER_STRETCH ((FIT_WARM_UP_EXERCISE_NAME)19) +#define FIT_WARM_UP_EXERCISE_NAME_SLIDE_OUT ((FIT_WARM_UP_EXERCISE_NAME)20) +#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_HIP_CROSSOVER ((FIT_WARM_UP_EXERCISE_NAME)21) +#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_REACH_ROLL_AND_LIFT ((FIT_WARM_UP_EXERCISE_NAME)22) +#define FIT_WARM_UP_EXERCISE_NAME_SWISS_BALL_WINDSHIELD_WIPERS ((FIT_WARM_UP_EXERCISE_NAME)23) +#define FIT_WARM_UP_EXERCISE_NAME_THORACIC_ROTATION ((FIT_WARM_UP_EXERCISE_NAME)24) +#define FIT_WARM_UP_EXERCISE_NAME_WALKING_HIGH_KICKS ((FIT_WARM_UP_EXERCISE_NAME)25) +#define FIT_WARM_UP_EXERCISE_NAME_WALKING_HIGH_KNEES ((FIT_WARM_UP_EXERCISE_NAME)26) +#define FIT_WARM_UP_EXERCISE_NAME_WALKING_KNEE_HUGS ((FIT_WARM_UP_EXERCISE_NAME)27) +#define FIT_WARM_UP_EXERCISE_NAME_WALKING_LEG_CRADLES ((FIT_WARM_UP_EXERCISE_NAME)28) +#define FIT_WARM_UP_EXERCISE_NAME_WALKOUT ((FIT_WARM_UP_EXERCISE_NAME)29) +#define FIT_WARM_UP_EXERCISE_NAME_WALKOUT_FROM_PUSH_UP_POSITION ((FIT_WARM_UP_EXERCISE_NAME)30) +#define FIT_WARM_UP_EXERCISE_NAME_COUNT 31 + +typedef FIT_UINT16 FIT_RUN_EXERCISE_NAME; +#define FIT_RUN_EXERCISE_NAME_INVALID FIT_UINT16_INVALID +#define FIT_RUN_EXERCISE_NAME_RUN ((FIT_RUN_EXERCISE_NAME)0) +#define FIT_RUN_EXERCISE_NAME_WALK ((FIT_RUN_EXERCISE_NAME)1) +#define FIT_RUN_EXERCISE_NAME_JOG ((FIT_RUN_EXERCISE_NAME)2) +#define FIT_RUN_EXERCISE_NAME_SPRINT ((FIT_RUN_EXERCISE_NAME)3) +#define FIT_RUN_EXERCISE_NAME_COUNT 4 + +typedef FIT_ENUM FIT_WATER_TYPE; +#define FIT_WATER_TYPE_INVALID FIT_ENUM_INVALID +#define FIT_WATER_TYPE_FRESH ((FIT_WATER_TYPE)0) +#define FIT_WATER_TYPE_SALT ((FIT_WATER_TYPE)1) +#define FIT_WATER_TYPE_EN13319 ((FIT_WATER_TYPE)2) +#define FIT_WATER_TYPE_CUSTOM ((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_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_DIVE_GAS_STATUS)0) +#define FIT_DIVE_GAS_STATUS_ENABLED ((FIT_DIVE_GAS_STATUS)1) +#define FIT_DIVE_GAS_STATUS_BACKUP_ONLY ((FIT_DIVE_GAS_STATUS)2) +#define FIT_DIVE_GAS_STATUS_COUNT 3 + +typedef FIT_ENUM FIT_DIVE_ALARM_TYPE; +#define FIT_DIVE_ALARM_TYPE_INVALID FIT_ENUM_INVALID +#define FIT_DIVE_ALARM_TYPE_DEPTH ((FIT_DIVE_ALARM_TYPE)0) +#define FIT_DIVE_ALARM_TYPE_TIME ((FIT_DIVE_ALARM_TYPE)1) +#define FIT_DIVE_ALARM_TYPE_COUNT 2 + +typedef FIT_ENUM FIT_DIVE_BACKLIGHT_MODE; +#define FIT_DIVE_BACKLIGHT_MODE_INVALID FIT_ENUM_INVALID +#define FIT_DIVE_BACKLIGHT_MODE_AT_DEPTH ((FIT_DIVE_BACKLIGHT_MODE)0) +#define FIT_DIVE_BACKLIGHT_MODE_ALWAYS_ON ((FIT_DIVE_BACKLIGHT_MODE)1) +#define FIT_DIVE_BACKLIGHT_MODE_COUNT 2 + +typedef FIT_UINT16 FIT_FAVERO_PRODUCT; +#define FIT_FAVERO_PRODUCT_INVALID FIT_UINT16_INVALID +#define FIT_FAVERO_PRODUCT_ASSIOMA_UNO ((FIT_FAVERO_PRODUCT)10) +#define FIT_FAVERO_PRODUCT_ASSIOMA_DUO ((FIT_FAVERO_PRODUCT)12) +#define FIT_FAVERO_PRODUCT_COUNT 2 + +typedef FIT_ENUM FIT_CLIMB_PRO_EVENT; +#define FIT_CLIMB_PRO_EVENT_INVALID FIT_ENUM_INVALID +#define FIT_CLIMB_PRO_EVENT_APPROACH ((FIT_CLIMB_PRO_EVENT)0) +#define FIT_CLIMB_PRO_EVENT_START ((FIT_CLIMB_PRO_EVENT)1) +#define FIT_CLIMB_PRO_EVENT_COMPLETE ((FIT_CLIMB_PRO_EVENT)2) +#define FIT_CLIMB_PRO_EVENT_COUNT 3 + +typedef FIT_ENUM FIT_TAP_SENSITIVITY; +#define FIT_TAP_SENSITIVITY_INVALID FIT_ENUM_INVALID +#define FIT_TAP_SENSITIVITY_HIGH ((FIT_TAP_SENSITIVITY)0) +#define FIT_TAP_SENSITIVITY_MEDIUM ((FIT_TAP_SENSITIVITY)1) +#define FIT_TAP_SENSITIVITY_LOW ((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_RADAR_THREAT_LEVEL_TYPE)0) @@ -3940,4201 +3940,4201 @@ typedef FIT_ENUM FIT_RADAR_THREAT_LEVEL_TYPE; #define FIT_RADAR_THREAT_LEVEL_TYPE_THREAT_APPROACHING ((FIT_RADAR_THREAT_LEVEL_TYPE)2) #define FIT_RADAR_THREAT_LEVEL_TYPE_THREAT_APPROACHING_FAST ((FIT_RADAR_THREAT_LEVEL_TYPE)3) #define FIT_RADAR_THREAT_LEVEL_TYPE_COUNT 4 - - -/////////////////////////////////////////////////////////////////////// -// 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; + + +/////////////////////////////////////////////////////////////////////// +// 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[91]; -} FIT_MESG_CONVERT; - - -/////////////////////////////////////////////////////////////////////// -// Messages -/////////////////////////////////////////////////////////////////////// - -#define FIT_MESG_SIZE 254 +} FIT_MESG_CONVERT; + + +/////////////////////////////////////////////////////////////////////// +// Messages +/////////////////////////////////////////////////////////////////////// + +#define FIT_MESG_SIZE 254 #define FIT_MESG_DEF_SIZE 278 - -// 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_FILE_ID_FIELD_NUM)3) -#define FIT_FILE_ID_FIELD_NUM_TIME_CREATED ((FIT_FILE_ID_FIELD_NUM)4) -#define FIT_FILE_ID_FIELD_NUM_PRODUCT_NAME ((FIT_FILE_ID_FIELD_NUM)8) -#define FIT_FILE_ID_FIELD_NUM_MANUFACTURER ((FIT_FILE_ID_FIELD_NUM)1) -#define FIT_FILE_ID_FIELD_NUM_PRODUCT ((FIT_FILE_ID_FIELD_NUM)2) -#define FIT_FILE_ID_FIELD_NUM_NUMBER ((FIT_FILE_ID_FIELD_NUM)5) -#define FIT_FILE_ID_FIELD_NUM_TYPE ((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_FILE_CREATOR_FIELD_NUM)0) -#define FIT_FILE_CREATOR_FIELD_NUM_HARDWARE_VERSION ((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_SOFTWARE_FIELD_NUM)5) -#define FIT_SOFTWARE_FIELD_NUM_MESSAGE_INDEX ((FIT_SOFTWARE_FIELD_NUM)254) -#define FIT_SOFTWARE_FIELD_NUM_VERSION ((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_SLAVE_DEVICE_FIELD_NUM)0) -#define FIT_SLAVE_DEVICE_FIELD_NUM_PRODUCT ((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_CAPABILITIES_FIELD_NUM)0) -#define FIT_CAPABILITIES_FIELD_NUM_WORKOUTS_SUPPORTED ((FIT_CAPABILITIES_FIELD_NUM)21) -#define FIT_CAPABILITIES_FIELD_NUM_CONNECTIVITY_SUPPORTED ((FIT_CAPABILITIES_FIELD_NUM)23) -#define FIT_CAPABILITIES_FIELD_NUM_SPORTS ((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_FILE_CAPABILITIES_FIELD_NUM)2) -#define FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_SIZE ((FIT_FILE_CAPABILITIES_FIELD_NUM)4) -#define FIT_FILE_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX ((FIT_FILE_CAPABILITIES_FIELD_NUM)254) -#define FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_COUNT ((FIT_FILE_CAPABILITIES_FIELD_NUM)3) -#define FIT_FILE_CAPABILITIES_FIELD_NUM_TYPE ((FIT_FILE_CAPABILITIES_FIELD_NUM)0) -#define FIT_FILE_CAPABILITIES_FIELD_NUM_FLAGS ((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_MESG_CAPABILITIES_FIELD_NUM)254) -#define FIT_MESG_CAPABILITIES_FIELD_NUM_MESG_NUM ((FIT_MESG_CAPABILITIES_FIELD_NUM)1) -#define FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT ((FIT_MESG_CAPABILITIES_FIELD_NUM)3) -#define FIT_MESG_CAPABILITIES_FIELD_NUM_FILE ((FIT_MESG_CAPABILITIES_FIELD_NUM)0) -#define FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT_TYPE ((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_FIELD_CAPABILITIES_FIELD_NUM)254) -#define FIT_FIELD_CAPABILITIES_FIELD_NUM_MESG_NUM ((FIT_FIELD_CAPABILITIES_FIELD_NUM)1) -#define FIT_FIELD_CAPABILITIES_FIELD_NUM_COUNT ((FIT_FIELD_CAPABILITIES_FIELD_NUM)3) -#define FIT_FIELD_CAPABILITIES_FIELD_NUM_FILE ((FIT_FIELD_CAPABILITIES_FIELD_NUM)0) -#define FIT_FIELD_CAPABILITIES_FIELD_NUM_FIELD_NUM ((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_DEVICE_SETTINGS_FIELD_NUM)1) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_OFFSET ((FIT_DEVICE_SETTINGS_FIELD_NUM)2) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_CLOCK_TIME ((FIT_DEVICE_SETTINGS_FIELD_NUM)39) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_PAGES_ENABLED ((FIT_DEVICE_SETTINGS_FIELD_NUM)40) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_DEFAULT_PAGE ((FIT_DEVICE_SETTINGS_FIELD_NUM)57) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_STEPS ((FIT_DEVICE_SETTINGS_FIELD_NUM)58) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_TIME ((FIT_DEVICE_SETTINGS_FIELD_NUM)59) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVE_TIME_ZONE ((FIT_DEVICE_SETTINGS_FIELD_NUM)0) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_MODE ((FIT_DEVICE_SETTINGS_FIELD_NUM)4) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_ZONE_OFFSET ((FIT_DEVICE_SETTINGS_FIELD_NUM)5) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_BACKLIGHT_MODE ((FIT_DEVICE_SETTINGS_FIELD_NUM)12) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVITY_TRACKER_ENABLED ((FIT_DEVICE_SETTINGS_FIELD_NUM)36) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_MOVE_ALERT_ENABLED ((FIT_DEVICE_SETTINGS_FIELD_NUM)46) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_DATE_MODE ((FIT_DEVICE_SETTINGS_FIELD_NUM)47) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_DISPLAY_ORIENTATION ((FIT_DEVICE_SETTINGS_FIELD_NUM)55) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_MOUNTING_SIDE ((FIT_DEVICE_SETTINGS_FIELD_NUM)56) -#define FIT_DEVICE_SETTINGS_FIELD_NUM_TAP_SENSITIVITY ((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]; // - 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_USER_PROFILE_FIELD_NUM)0) -#define FIT_USER_PROFILE_FIELD_NUM_MESSAGE_INDEX ((FIT_USER_PROFILE_FIELD_NUM)254) -#define FIT_USER_PROFILE_FIELD_NUM_WEIGHT ((FIT_USER_PROFILE_FIELD_NUM)4) -#define FIT_USER_PROFILE_FIELD_NUM_LOCAL_ID ((FIT_USER_PROFILE_FIELD_NUM)22) -#define FIT_USER_PROFILE_FIELD_NUM_USER_RUNNING_STEP_LENGTH ((FIT_USER_PROFILE_FIELD_NUM)31) -#define FIT_USER_PROFILE_FIELD_NUM_USER_WALKING_STEP_LENGTH ((FIT_USER_PROFILE_FIELD_NUM)32) -#define FIT_USER_PROFILE_FIELD_NUM_GENDER ((FIT_USER_PROFILE_FIELD_NUM)1) -#define FIT_USER_PROFILE_FIELD_NUM_AGE ((FIT_USER_PROFILE_FIELD_NUM)2) -#define FIT_USER_PROFILE_FIELD_NUM_HEIGHT ((FIT_USER_PROFILE_FIELD_NUM)3) -#define FIT_USER_PROFILE_FIELD_NUM_LANGUAGE ((FIT_USER_PROFILE_FIELD_NUM)5) -#define FIT_USER_PROFILE_FIELD_NUM_ELEV_SETTING ((FIT_USER_PROFILE_FIELD_NUM)6) -#define FIT_USER_PROFILE_FIELD_NUM_WEIGHT_SETTING ((FIT_USER_PROFILE_FIELD_NUM)7) -#define FIT_USER_PROFILE_FIELD_NUM_RESTING_HEART_RATE ((FIT_USER_PROFILE_FIELD_NUM)8) -#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_RUNNING_HEART_RATE ((FIT_USER_PROFILE_FIELD_NUM)9) -#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_BIKING_HEART_RATE ((FIT_USER_PROFILE_FIELD_NUM)10) -#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_HEART_RATE ((FIT_USER_PROFILE_FIELD_NUM)11) -#define FIT_USER_PROFILE_FIELD_NUM_HR_SETTING ((FIT_USER_PROFILE_FIELD_NUM)12) -#define FIT_USER_PROFILE_FIELD_NUM_SPEED_SETTING ((FIT_USER_PROFILE_FIELD_NUM)13) -#define FIT_USER_PROFILE_FIELD_NUM_DIST_SETTING ((FIT_USER_PROFILE_FIELD_NUM)14) -#define FIT_USER_PROFILE_FIELD_NUM_POWER_SETTING ((FIT_USER_PROFILE_FIELD_NUM)16) -#define FIT_USER_PROFILE_FIELD_NUM_ACTIVITY_CLASS ((FIT_USER_PROFILE_FIELD_NUM)17) -#define FIT_USER_PROFILE_FIELD_NUM_POSITION_SETTING ((FIT_USER_PROFILE_FIELD_NUM)18) -#define FIT_USER_PROFILE_FIELD_NUM_TEMPERATURE_SETTING ((FIT_USER_PROFILE_FIELD_NUM)21) -#define FIT_USER_PROFILE_FIELD_NUM_GLOBAL_ID ((FIT_USER_PROFILE_FIELD_NUM)23) -#define FIT_USER_PROFILE_FIELD_NUM_HEIGHT_SETTING ((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_HRM_PROFILE_FIELD_NUM)254) -#define FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID ((FIT_HRM_PROFILE_FIELD_NUM)1) -#define FIT_HRM_PROFILE_FIELD_NUM_ENABLED ((FIT_HRM_PROFILE_FIELD_NUM)0) -#define FIT_HRM_PROFILE_FIELD_NUM_LOG_HRV ((FIT_HRM_PROFILE_FIELD_NUM)2) -#define FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID_TRANS_TYPE ((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_SDM_PROFILE_FIELD_NUM)3) -#define FIT_SDM_PROFILE_FIELD_NUM_MESSAGE_INDEX ((FIT_SDM_PROFILE_FIELD_NUM)254) -#define FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID ((FIT_SDM_PROFILE_FIELD_NUM)1) -#define FIT_SDM_PROFILE_FIELD_NUM_SDM_CAL_FACTOR ((FIT_SDM_PROFILE_FIELD_NUM)2) -#define FIT_SDM_PROFILE_FIELD_NUM_ENABLED ((FIT_SDM_PROFILE_FIELD_NUM)0) -#define FIT_SDM_PROFILE_FIELD_NUM_SPEED_SOURCE ((FIT_SDM_PROFILE_FIELD_NUM)4) -#define FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID_TRANS_TYPE ((FIT_SDM_PROFILE_FIELD_NUM)5) -#define FIT_SDM_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER ((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_BIKE_PROFILE_FIELD_NUM)0) -#define FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER ((FIT_BIKE_PROFILE_FIELD_NUM)3) -#define FIT_BIKE_PROFILE_FIELD_NUM_MESSAGE_INDEX ((FIT_BIKE_PROFILE_FIELD_NUM)254) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID ((FIT_BIKE_PROFILE_FIELD_NUM)4) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID ((FIT_BIKE_PROFILE_FIELD_NUM)5) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID ((FIT_BIKE_PROFILE_FIELD_NUM)6) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID ((FIT_BIKE_PROFILE_FIELD_NUM)7) -#define FIT_BIKE_PROFILE_FIELD_NUM_CUSTOM_WHEELSIZE ((FIT_BIKE_PROFILE_FIELD_NUM)8) -#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEELSIZE ((FIT_BIKE_PROFILE_FIELD_NUM)9) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_WEIGHT ((FIT_BIKE_PROFILE_FIELD_NUM)10) -#define FIT_BIKE_PROFILE_FIELD_NUM_POWER_CAL_FACTOR ((FIT_BIKE_PROFILE_FIELD_NUM)11) -#define FIT_BIKE_PROFILE_FIELD_NUM_SPORT ((FIT_BIKE_PROFILE_FIELD_NUM)1) -#define FIT_BIKE_PROFILE_FIELD_NUM_SUB_SPORT ((FIT_BIKE_PROFILE_FIELD_NUM)2) -#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEEL_CAL ((FIT_BIKE_PROFILE_FIELD_NUM)12) -#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_POWER_ZERO ((FIT_BIKE_PROFILE_FIELD_NUM)13) -#define FIT_BIKE_PROFILE_FIELD_NUM_ID ((FIT_BIKE_PROFILE_FIELD_NUM)14) -#define FIT_BIKE_PROFILE_FIELD_NUM_SPD_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)15) -#define FIT_BIKE_PROFILE_FIELD_NUM_CAD_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)16) -#define FIT_BIKE_PROFILE_FIELD_NUM_SPDCAD_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)17) -#define FIT_BIKE_PROFILE_FIELD_NUM_POWER_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)18) -#define FIT_BIKE_PROFILE_FIELD_NUM_CRANK_LENGTH ((FIT_BIKE_PROFILE_FIELD_NUM)19) -#define FIT_BIKE_PROFILE_FIELD_NUM_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)20) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID_TRANS_TYPE ((FIT_BIKE_PROFILE_FIELD_NUM)21) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID_TRANS_TYPE ((FIT_BIKE_PROFILE_FIELD_NUM)22) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID_TRANS_TYPE ((FIT_BIKE_PROFILE_FIELD_NUM)23) -#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID_TRANS_TYPE ((FIT_BIKE_PROFILE_FIELD_NUM)24) -#define FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER ((FIT_BIKE_PROFILE_FIELD_NUM)37) -#define FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR_NUM ((FIT_BIKE_PROFILE_FIELD_NUM)38) -#define FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR ((FIT_BIKE_PROFILE_FIELD_NUM)39) -#define FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR_NUM ((FIT_BIKE_PROFILE_FIELD_NUM)40) -#define FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR ((FIT_BIKE_PROFILE_FIELD_NUM)41) -#define FIT_BIKE_PROFILE_FIELD_NUM_SHIMANO_DI2_ENABLED ((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_CONNECTIVITY_FIELD_NUM)3) -#define FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)0) -#define FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_LE_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)1) -#define FIT_CONNECTIVITY_FIELD_NUM_ANT_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)2) -#define FIT_CONNECTIVITY_FIELD_NUM_LIVE_TRACKING_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)4) -#define FIT_CONNECTIVITY_FIELD_NUM_WEATHER_CONDITIONS_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)5) -#define FIT_CONNECTIVITY_FIELD_NUM_WEATHER_ALERTS_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)6) -#define FIT_CONNECTIVITY_FIELD_NUM_AUTO_ACTIVITY_UPLOAD_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)7) -#define FIT_CONNECTIVITY_FIELD_NUM_COURSE_DOWNLOAD_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)8) -#define FIT_CONNECTIVITY_FIELD_NUM_WORKOUT_DOWNLOAD_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)9) -#define FIT_CONNECTIVITY_FIELD_NUM_GPS_EPHEMERIS_DOWNLOAD_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)10) -#define FIT_CONNECTIVITY_FIELD_NUM_INCIDENT_DETECTION_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)11) -#define FIT_CONNECTIVITY_FIELD_NUM_GROUPTRACK_ENABLED ((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_ZONES_TARGET_FIELD_NUM)3) -#define FIT_ZONES_TARGET_FIELD_NUM_MAX_HEART_RATE ((FIT_ZONES_TARGET_FIELD_NUM)1) -#define FIT_ZONES_TARGET_FIELD_NUM_THRESHOLD_HEART_RATE ((FIT_ZONES_TARGET_FIELD_NUM)2) -#define FIT_ZONES_TARGET_FIELD_NUM_HR_CALC_TYPE ((FIT_ZONES_TARGET_FIELD_NUM)5) -#define FIT_ZONES_TARGET_FIELD_NUM_PWR_CALC_TYPE ((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_SPORT_FIELD_NUM)3) -#define FIT_SPORT_FIELD_NUM_SPORT ((FIT_SPORT_FIELD_NUM)0) -#define FIT_SPORT_FIELD_NUM_SUB_SPORT ((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_HR_ZONE_FIELD_NUM)2) -#define FIT_HR_ZONE_FIELD_NUM_MESSAGE_INDEX ((FIT_HR_ZONE_FIELD_NUM)254) -#define FIT_HR_ZONE_FIELD_NUM_HIGH_BPM ((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_SPEED_ZONE_FIELD_NUM)1) -#define FIT_SPEED_ZONE_FIELD_NUM_MESSAGE_INDEX ((FIT_SPEED_ZONE_FIELD_NUM)254) -#define FIT_SPEED_ZONE_FIELD_NUM_HIGH_VALUE ((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_CADENCE_ZONE_FIELD_NUM)1) -#define FIT_CADENCE_ZONE_FIELD_NUM_MESSAGE_INDEX ((FIT_CADENCE_ZONE_FIELD_NUM)254) -#define FIT_CADENCE_ZONE_FIELD_NUM_HIGH_VALUE ((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_POWER_ZONE_FIELD_NUM)2) -#define FIT_POWER_ZONE_FIELD_NUM_MESSAGE_INDEX ((FIT_POWER_ZONE_FIELD_NUM)254) -#define FIT_POWER_ZONE_FIELD_NUM_HIGH_VALUE ((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_MET_ZONE_FIELD_NUM)254) -#define FIT_MET_ZONE_FIELD_NUM_CALORIES ((FIT_MET_ZONE_FIELD_NUM)2) -#define FIT_MET_ZONE_FIELD_NUM_HIGH_BPM ((FIT_MET_ZONE_FIELD_NUM)1) -#define FIT_MET_ZONE_FIELD_NUM_FAT_CALORIES ((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; - -// 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_DIVE_SETTINGS_FIELD_NUM)0) -#define FIT_DIVE_SETTINGS_FIELD_NUM_HEART_RATE_SOURCE ((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_GOAL_FIELD_NUM)2) -#define FIT_GOAL_FIELD_NUM_END_DATE ((FIT_GOAL_FIELD_NUM)3) -#define FIT_GOAL_FIELD_NUM_VALUE ((FIT_GOAL_FIELD_NUM)5) -#define FIT_GOAL_FIELD_NUM_TARGET_VALUE ((FIT_GOAL_FIELD_NUM)7) -#define FIT_GOAL_FIELD_NUM_MESSAGE_INDEX ((FIT_GOAL_FIELD_NUM)254) -#define FIT_GOAL_FIELD_NUM_RECURRENCE_VALUE ((FIT_GOAL_FIELD_NUM)9) -#define FIT_GOAL_FIELD_NUM_SPORT ((FIT_GOAL_FIELD_NUM)0) -#define FIT_GOAL_FIELD_NUM_SUB_SPORT ((FIT_GOAL_FIELD_NUM)1) -#define FIT_GOAL_FIELD_NUM_TYPE ((FIT_GOAL_FIELD_NUM)4) -#define FIT_GOAL_FIELD_NUM_REPEAT ((FIT_GOAL_FIELD_NUM)6) -#define FIT_GOAL_FIELD_NUM_RECURRENCE ((FIT_GOAL_FIELD_NUM)8) -#define FIT_GOAL_FIELD_NUM_ENABLED ((FIT_GOAL_FIELD_NUM)10) -#define FIT_GOAL_FIELD_NUM_SOURCE ((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_ACTIVITY_FIELD_NUM)253) -#define FIT_ACTIVITY_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_ACTIVITY_FIELD_NUM)0) -#define FIT_ACTIVITY_FIELD_NUM_LOCAL_TIMESTAMP ((FIT_ACTIVITY_FIELD_NUM)5) -#define FIT_ACTIVITY_FIELD_NUM_NUM_SESSIONS ((FIT_ACTIVITY_FIELD_NUM)1) -#define FIT_ACTIVITY_FIELD_NUM_TYPE ((FIT_ACTIVITY_FIELD_NUM)2) -#define FIT_ACTIVITY_FIELD_NUM_EVENT ((FIT_ACTIVITY_FIELD_NUM)3) -#define FIT_ACTIVITY_FIELD_NUM_EVENT_TYPE ((FIT_ACTIVITY_FIELD_NUM)4) -#define FIT_ACTIVITY_FIELD_NUM_EVENT_GROUP ((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 209 -#define FIT_SESSION_MESG_DEF_SIZE 278 -#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_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_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_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_SESSION_MESG; - -typedef FIT_UINT8 FIT_SESSION_FIELD_NUM; - -#define FIT_SESSION_FIELD_NUM_TIMESTAMP ((FIT_SESSION_FIELD_NUM)253) -#define FIT_SESSION_FIELD_NUM_START_TIME ((FIT_SESSION_FIELD_NUM)2) -#define FIT_SESSION_FIELD_NUM_START_POSITION_LAT ((FIT_SESSION_FIELD_NUM)3) -#define FIT_SESSION_FIELD_NUM_START_POSITION_LONG ((FIT_SESSION_FIELD_NUM)4) -#define FIT_SESSION_FIELD_NUM_TOTAL_ELAPSED_TIME ((FIT_SESSION_FIELD_NUM)7) -#define FIT_SESSION_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_SESSION_FIELD_NUM)8) -#define FIT_SESSION_FIELD_NUM_TOTAL_DISTANCE ((FIT_SESSION_FIELD_NUM)9) -#define FIT_SESSION_FIELD_NUM_TOTAL_CYCLES ((FIT_SESSION_FIELD_NUM)10) -#define FIT_SESSION_FIELD_NUM_NEC_LAT ((FIT_SESSION_FIELD_NUM)29) -#define FIT_SESSION_FIELD_NUM_NEC_LONG ((FIT_SESSION_FIELD_NUM)30) -#define FIT_SESSION_FIELD_NUM_SWC_LAT ((FIT_SESSION_FIELD_NUM)31) -#define FIT_SESSION_FIELD_NUM_SWC_LONG ((FIT_SESSION_FIELD_NUM)32) -#define FIT_SESSION_FIELD_NUM_AVG_STROKE_COUNT ((FIT_SESSION_FIELD_NUM)41) -#define FIT_SESSION_FIELD_NUM_TOTAL_WORK ((FIT_SESSION_FIELD_NUM)48) -#define FIT_SESSION_FIELD_NUM_TOTAL_MOVING_TIME ((FIT_SESSION_FIELD_NUM)59) -#define FIT_SESSION_FIELD_NUM_TIME_IN_HR_ZONE ((FIT_SESSION_FIELD_NUM)65) -#define FIT_SESSION_FIELD_NUM_TIME_IN_SPEED_ZONE ((FIT_SESSION_FIELD_NUM)66) -#define FIT_SESSION_FIELD_NUM_TIME_IN_CADENCE_ZONE ((FIT_SESSION_FIELD_NUM)67) -#define FIT_SESSION_FIELD_NUM_TIME_IN_POWER_ZONE ((FIT_SESSION_FIELD_NUM)68) -#define FIT_SESSION_FIELD_NUM_AVG_LAP_TIME ((FIT_SESSION_FIELD_NUM)69) -#define FIT_SESSION_FIELD_NUM_ENHANCED_AVG_SPEED ((FIT_SESSION_FIELD_NUM)124) -#define FIT_SESSION_FIELD_NUM_ENHANCED_MAX_SPEED ((FIT_SESSION_FIELD_NUM)125) -#define FIT_SESSION_FIELD_NUM_ENHANCED_AVG_ALTITUDE ((FIT_SESSION_FIELD_NUM)126) -#define FIT_SESSION_FIELD_NUM_ENHANCED_MIN_ALTITUDE ((FIT_SESSION_FIELD_NUM)127) -#define FIT_SESSION_FIELD_NUM_ENHANCED_MAX_ALTITUDE ((FIT_SESSION_FIELD_NUM)128) -#define FIT_SESSION_FIELD_NUM_MESSAGE_INDEX ((FIT_SESSION_FIELD_NUM)254) -#define FIT_SESSION_FIELD_NUM_TOTAL_CALORIES ((FIT_SESSION_FIELD_NUM)11) -#define FIT_SESSION_FIELD_NUM_TOTAL_FAT_CALORIES ((FIT_SESSION_FIELD_NUM)13) -#define FIT_SESSION_FIELD_NUM_AVG_SPEED ((FIT_SESSION_FIELD_NUM)14) -#define FIT_SESSION_FIELD_NUM_MAX_SPEED ((FIT_SESSION_FIELD_NUM)15) -#define FIT_SESSION_FIELD_NUM_AVG_POWER ((FIT_SESSION_FIELD_NUM)20) -#define FIT_SESSION_FIELD_NUM_MAX_POWER ((FIT_SESSION_FIELD_NUM)21) -#define FIT_SESSION_FIELD_NUM_TOTAL_ASCENT ((FIT_SESSION_FIELD_NUM)22) -#define FIT_SESSION_FIELD_NUM_TOTAL_DESCENT ((FIT_SESSION_FIELD_NUM)23) -#define FIT_SESSION_FIELD_NUM_FIRST_LAP_INDEX ((FIT_SESSION_FIELD_NUM)25) -#define FIT_SESSION_FIELD_NUM_NUM_LAPS ((FIT_SESSION_FIELD_NUM)26) -#define FIT_SESSION_FIELD_NUM_NUM_LENGTHS ((FIT_SESSION_FIELD_NUM)33) -#define FIT_SESSION_FIELD_NUM_NORMALIZED_POWER ((FIT_SESSION_FIELD_NUM)34) -#define FIT_SESSION_FIELD_NUM_TRAINING_STRESS_SCORE ((FIT_SESSION_FIELD_NUM)35) -#define FIT_SESSION_FIELD_NUM_INTENSITY_FACTOR ((FIT_SESSION_FIELD_NUM)36) -#define FIT_SESSION_FIELD_NUM_LEFT_RIGHT_BALANCE ((FIT_SESSION_FIELD_NUM)37) -#define FIT_SESSION_FIELD_NUM_AVG_STROKE_DISTANCE ((FIT_SESSION_FIELD_NUM)42) -#define FIT_SESSION_FIELD_NUM_POOL_LENGTH ((FIT_SESSION_FIELD_NUM)44) -#define FIT_SESSION_FIELD_NUM_THRESHOLD_POWER ((FIT_SESSION_FIELD_NUM)45) -#define FIT_SESSION_FIELD_NUM_NUM_ACTIVE_LENGTHS ((FIT_SESSION_FIELD_NUM)47) -#define FIT_SESSION_FIELD_NUM_AVG_ALTITUDE ((FIT_SESSION_FIELD_NUM)49) -#define FIT_SESSION_FIELD_NUM_MAX_ALTITUDE ((FIT_SESSION_FIELD_NUM)50) -#define FIT_SESSION_FIELD_NUM_AVG_GRADE ((FIT_SESSION_FIELD_NUM)52) -#define FIT_SESSION_FIELD_NUM_AVG_POS_GRADE ((FIT_SESSION_FIELD_NUM)53) -#define FIT_SESSION_FIELD_NUM_AVG_NEG_GRADE ((FIT_SESSION_FIELD_NUM)54) -#define FIT_SESSION_FIELD_NUM_MAX_POS_GRADE ((FIT_SESSION_FIELD_NUM)55) -#define FIT_SESSION_FIELD_NUM_MAX_NEG_GRADE ((FIT_SESSION_FIELD_NUM)56) -#define FIT_SESSION_FIELD_NUM_AVG_POS_VERTICAL_SPEED ((FIT_SESSION_FIELD_NUM)60) -#define FIT_SESSION_FIELD_NUM_AVG_NEG_VERTICAL_SPEED ((FIT_SESSION_FIELD_NUM)61) -#define FIT_SESSION_FIELD_NUM_MAX_POS_VERTICAL_SPEED ((FIT_SESSION_FIELD_NUM)62) -#define FIT_SESSION_FIELD_NUM_MAX_NEG_VERTICAL_SPEED ((FIT_SESSION_FIELD_NUM)63) -#define FIT_SESSION_FIELD_NUM_BEST_LAP_INDEX ((FIT_SESSION_FIELD_NUM)70) -#define FIT_SESSION_FIELD_NUM_MIN_ALTITUDE ((FIT_SESSION_FIELD_NUM)71) -#define FIT_SESSION_FIELD_NUM_PLAYER_SCORE ((FIT_SESSION_FIELD_NUM)82) -#define FIT_SESSION_FIELD_NUM_OPPONENT_SCORE ((FIT_SESSION_FIELD_NUM)83) -#define FIT_SESSION_FIELD_NUM_STROKE_COUNT ((FIT_SESSION_FIELD_NUM)85) -#define FIT_SESSION_FIELD_NUM_ZONE_COUNT ((FIT_SESSION_FIELD_NUM)86) -#define FIT_SESSION_FIELD_NUM_MAX_BALL_SPEED ((FIT_SESSION_FIELD_NUM)87) -#define FIT_SESSION_FIELD_NUM_AVG_BALL_SPEED ((FIT_SESSION_FIELD_NUM)88) -#define FIT_SESSION_FIELD_NUM_AVG_VERTICAL_OSCILLATION ((FIT_SESSION_FIELD_NUM)89) -#define FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME_PERCENT ((FIT_SESSION_FIELD_NUM)90) -#define FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME ((FIT_SESSION_FIELD_NUM)91) -#define FIT_SESSION_FIELD_NUM_AVG_VAM ((FIT_SESSION_FIELD_NUM)139) -#define FIT_SESSION_FIELD_NUM_EVENT ((FIT_SESSION_FIELD_NUM)0) -#define FIT_SESSION_FIELD_NUM_EVENT_TYPE ((FIT_SESSION_FIELD_NUM)1) -#define FIT_SESSION_FIELD_NUM_SPORT ((FIT_SESSION_FIELD_NUM)5) -#define FIT_SESSION_FIELD_NUM_SUB_SPORT ((FIT_SESSION_FIELD_NUM)6) -#define FIT_SESSION_FIELD_NUM_AVG_HEART_RATE ((FIT_SESSION_FIELD_NUM)16) -#define FIT_SESSION_FIELD_NUM_MAX_HEART_RATE ((FIT_SESSION_FIELD_NUM)17) -#define FIT_SESSION_FIELD_NUM_AVG_CADENCE ((FIT_SESSION_FIELD_NUM)18) -#define FIT_SESSION_FIELD_NUM_MAX_CADENCE ((FIT_SESSION_FIELD_NUM)19) -#define FIT_SESSION_FIELD_NUM_TOTAL_TRAINING_EFFECT ((FIT_SESSION_FIELD_NUM)24) -#define FIT_SESSION_FIELD_NUM_EVENT_GROUP ((FIT_SESSION_FIELD_NUM)27) -#define FIT_SESSION_FIELD_NUM_TRIGGER ((FIT_SESSION_FIELD_NUM)28) -#define FIT_SESSION_FIELD_NUM_SWIM_STROKE ((FIT_SESSION_FIELD_NUM)43) -#define FIT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT ((FIT_SESSION_FIELD_NUM)46) -#define FIT_SESSION_FIELD_NUM_GPS_ACCURACY ((FIT_SESSION_FIELD_NUM)51) -#define FIT_SESSION_FIELD_NUM_AVG_TEMPERATURE ((FIT_SESSION_FIELD_NUM)57) -#define FIT_SESSION_FIELD_NUM_MAX_TEMPERATURE ((FIT_SESSION_FIELD_NUM)58) -#define FIT_SESSION_FIELD_NUM_MIN_HEART_RATE ((FIT_SESSION_FIELD_NUM)64) -#define FIT_SESSION_FIELD_NUM_OPPONENT_NAME ((FIT_SESSION_FIELD_NUM)84) -#define FIT_SESSION_FIELD_NUM_AVG_FRACTIONAL_CADENCE ((FIT_SESSION_FIELD_NUM)92) -#define FIT_SESSION_FIELD_NUM_MAX_FRACTIONAL_CADENCE ((FIT_SESSION_FIELD_NUM)93) -#define FIT_SESSION_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES ((FIT_SESSION_FIELD_NUM)94) -#define FIT_SESSION_FIELD_NUM_SPORT_INDEX ((FIT_SESSION_FIELD_NUM)111) -#define FIT_SESSION_FIELD_NUM_TOTAL_ANAEROBIC_TRAINING_EFFECT ((FIT_SESSION_FIELD_NUM)137) - -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_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_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_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 189 -#define FIT_LAP_MESG_DEF_SIZE 254 -#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_LAP_MESG; - -typedef FIT_UINT8 FIT_LAP_FIELD_NUM; - -#define FIT_LAP_FIELD_NUM_TIMESTAMP ((FIT_LAP_FIELD_NUM)253) -#define FIT_LAP_FIELD_NUM_START_TIME ((FIT_LAP_FIELD_NUM)2) -#define FIT_LAP_FIELD_NUM_START_POSITION_LAT ((FIT_LAP_FIELD_NUM)3) -#define FIT_LAP_FIELD_NUM_START_POSITION_LONG ((FIT_LAP_FIELD_NUM)4) -#define FIT_LAP_FIELD_NUM_END_POSITION_LAT ((FIT_LAP_FIELD_NUM)5) -#define FIT_LAP_FIELD_NUM_END_POSITION_LONG ((FIT_LAP_FIELD_NUM)6) -#define FIT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME ((FIT_LAP_FIELD_NUM)7) -#define FIT_LAP_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_LAP_FIELD_NUM)8) -#define FIT_LAP_FIELD_NUM_TOTAL_DISTANCE ((FIT_LAP_FIELD_NUM)9) -#define FIT_LAP_FIELD_NUM_TOTAL_CYCLES ((FIT_LAP_FIELD_NUM)10) -#define FIT_LAP_FIELD_NUM_TOTAL_WORK ((FIT_LAP_FIELD_NUM)41) -#define FIT_LAP_FIELD_NUM_TOTAL_MOVING_TIME ((FIT_LAP_FIELD_NUM)52) -#define FIT_LAP_FIELD_NUM_TIME_IN_HR_ZONE ((FIT_LAP_FIELD_NUM)57) -#define FIT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE ((FIT_LAP_FIELD_NUM)58) -#define FIT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE ((FIT_LAP_FIELD_NUM)59) -#define FIT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE ((FIT_LAP_FIELD_NUM)60) -#define FIT_LAP_FIELD_NUM_ENHANCED_AVG_SPEED ((FIT_LAP_FIELD_NUM)110) -#define FIT_LAP_FIELD_NUM_ENHANCED_MAX_SPEED ((FIT_LAP_FIELD_NUM)111) -#define FIT_LAP_FIELD_NUM_ENHANCED_AVG_ALTITUDE ((FIT_LAP_FIELD_NUM)112) -#define FIT_LAP_FIELD_NUM_ENHANCED_MIN_ALTITUDE ((FIT_LAP_FIELD_NUM)113) -#define FIT_LAP_FIELD_NUM_ENHANCED_MAX_ALTITUDE ((FIT_LAP_FIELD_NUM)114) -#define FIT_LAP_FIELD_NUM_MESSAGE_INDEX ((FIT_LAP_FIELD_NUM)254) -#define FIT_LAP_FIELD_NUM_TOTAL_CALORIES ((FIT_LAP_FIELD_NUM)11) -#define FIT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES ((FIT_LAP_FIELD_NUM)12) -#define FIT_LAP_FIELD_NUM_AVG_SPEED ((FIT_LAP_FIELD_NUM)13) -#define FIT_LAP_FIELD_NUM_MAX_SPEED ((FIT_LAP_FIELD_NUM)14) -#define FIT_LAP_FIELD_NUM_AVG_POWER ((FIT_LAP_FIELD_NUM)19) -#define FIT_LAP_FIELD_NUM_MAX_POWER ((FIT_LAP_FIELD_NUM)20) -#define FIT_LAP_FIELD_NUM_TOTAL_ASCENT ((FIT_LAP_FIELD_NUM)21) -#define FIT_LAP_FIELD_NUM_TOTAL_DESCENT ((FIT_LAP_FIELD_NUM)22) -#define FIT_LAP_FIELD_NUM_NUM_LENGTHS ((FIT_LAP_FIELD_NUM)32) -#define FIT_LAP_FIELD_NUM_NORMALIZED_POWER ((FIT_LAP_FIELD_NUM)33) -#define FIT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE ((FIT_LAP_FIELD_NUM)34) -#define FIT_LAP_FIELD_NUM_FIRST_LENGTH_INDEX ((FIT_LAP_FIELD_NUM)35) -#define FIT_LAP_FIELD_NUM_AVG_STROKE_DISTANCE ((FIT_LAP_FIELD_NUM)37) -#define FIT_LAP_FIELD_NUM_NUM_ACTIVE_LENGTHS ((FIT_LAP_FIELD_NUM)40) -#define FIT_LAP_FIELD_NUM_AVG_ALTITUDE ((FIT_LAP_FIELD_NUM)42) -#define FIT_LAP_FIELD_NUM_MAX_ALTITUDE ((FIT_LAP_FIELD_NUM)43) -#define FIT_LAP_FIELD_NUM_AVG_GRADE ((FIT_LAP_FIELD_NUM)45) -#define FIT_LAP_FIELD_NUM_AVG_POS_GRADE ((FIT_LAP_FIELD_NUM)46) -#define FIT_LAP_FIELD_NUM_AVG_NEG_GRADE ((FIT_LAP_FIELD_NUM)47) -#define FIT_LAP_FIELD_NUM_MAX_POS_GRADE ((FIT_LAP_FIELD_NUM)48) -#define FIT_LAP_FIELD_NUM_MAX_NEG_GRADE ((FIT_LAP_FIELD_NUM)49) -#define FIT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED ((FIT_LAP_FIELD_NUM)53) -#define FIT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED ((FIT_LAP_FIELD_NUM)54) -#define FIT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED ((FIT_LAP_FIELD_NUM)55) -#define FIT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED ((FIT_LAP_FIELD_NUM)56) -#define FIT_LAP_FIELD_NUM_REPETITION_NUM ((FIT_LAP_FIELD_NUM)61) -#define FIT_LAP_FIELD_NUM_MIN_ALTITUDE ((FIT_LAP_FIELD_NUM)62) -#define FIT_LAP_FIELD_NUM_WKT_STEP_INDEX ((FIT_LAP_FIELD_NUM)71) -#define FIT_LAP_FIELD_NUM_OPPONENT_SCORE ((FIT_LAP_FIELD_NUM)74) -#define FIT_LAP_FIELD_NUM_STROKE_COUNT ((FIT_LAP_FIELD_NUM)75) -#define FIT_LAP_FIELD_NUM_ZONE_COUNT ((FIT_LAP_FIELD_NUM)76) -#define FIT_LAP_FIELD_NUM_AVG_VERTICAL_OSCILLATION ((FIT_LAP_FIELD_NUM)77) -#define FIT_LAP_FIELD_NUM_AVG_STANCE_TIME_PERCENT ((FIT_LAP_FIELD_NUM)78) -#define FIT_LAP_FIELD_NUM_AVG_STANCE_TIME ((FIT_LAP_FIELD_NUM)79) -#define FIT_LAP_FIELD_NUM_PLAYER_SCORE ((FIT_LAP_FIELD_NUM)83) -#define FIT_LAP_FIELD_NUM_AVG_TOTAL_HEMOGLOBIN_CONC ((FIT_LAP_FIELD_NUM)84) -#define FIT_LAP_FIELD_NUM_MIN_TOTAL_HEMOGLOBIN_CONC ((FIT_LAP_FIELD_NUM)85) -#define FIT_LAP_FIELD_NUM_MAX_TOTAL_HEMOGLOBIN_CONC ((FIT_LAP_FIELD_NUM)86) -#define FIT_LAP_FIELD_NUM_AVG_SATURATED_HEMOGLOBIN_PERCENT ((FIT_LAP_FIELD_NUM)87) -#define FIT_LAP_FIELD_NUM_MIN_SATURATED_HEMOGLOBIN_PERCENT ((FIT_LAP_FIELD_NUM)88) -#define FIT_LAP_FIELD_NUM_MAX_SATURATED_HEMOGLOBIN_PERCENT ((FIT_LAP_FIELD_NUM)89) -#define FIT_LAP_FIELD_NUM_AVG_VAM ((FIT_LAP_FIELD_NUM)121) -#define FIT_LAP_FIELD_NUM_EVENT ((FIT_LAP_FIELD_NUM)0) -#define FIT_LAP_FIELD_NUM_EVENT_TYPE ((FIT_LAP_FIELD_NUM)1) -#define FIT_LAP_FIELD_NUM_AVG_HEART_RATE ((FIT_LAP_FIELD_NUM)15) -#define FIT_LAP_FIELD_NUM_MAX_HEART_RATE ((FIT_LAP_FIELD_NUM)16) -#define FIT_LAP_FIELD_NUM_AVG_CADENCE ((FIT_LAP_FIELD_NUM)17) -#define FIT_LAP_FIELD_NUM_MAX_CADENCE ((FIT_LAP_FIELD_NUM)18) -#define FIT_LAP_FIELD_NUM_INTENSITY ((FIT_LAP_FIELD_NUM)23) -#define FIT_LAP_FIELD_NUM_LAP_TRIGGER ((FIT_LAP_FIELD_NUM)24) -#define FIT_LAP_FIELD_NUM_SPORT ((FIT_LAP_FIELD_NUM)25) -#define FIT_LAP_FIELD_NUM_EVENT_GROUP ((FIT_LAP_FIELD_NUM)26) -#define FIT_LAP_FIELD_NUM_SWIM_STROKE ((FIT_LAP_FIELD_NUM)38) -#define FIT_LAP_FIELD_NUM_SUB_SPORT ((FIT_LAP_FIELD_NUM)39) -#define FIT_LAP_FIELD_NUM_GPS_ACCURACY ((FIT_LAP_FIELD_NUM)44) -#define FIT_LAP_FIELD_NUM_AVG_TEMPERATURE ((FIT_LAP_FIELD_NUM)50) -#define FIT_LAP_FIELD_NUM_MAX_TEMPERATURE ((FIT_LAP_FIELD_NUM)51) -#define FIT_LAP_FIELD_NUM_MIN_HEART_RATE ((FIT_LAP_FIELD_NUM)63) -#define FIT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE ((FIT_LAP_FIELD_NUM)80) -#define FIT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE ((FIT_LAP_FIELD_NUM)81) -#define FIT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES ((FIT_LAP_FIELD_NUM)82) - -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_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_LENGTH_FIELD_NUM)253) -#define FIT_LENGTH_FIELD_NUM_START_TIME ((FIT_LENGTH_FIELD_NUM)2) -#define FIT_LENGTH_FIELD_NUM_TOTAL_ELAPSED_TIME ((FIT_LENGTH_FIELD_NUM)3) -#define FIT_LENGTH_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_LENGTH_FIELD_NUM)4) -#define FIT_LENGTH_FIELD_NUM_MESSAGE_INDEX ((FIT_LENGTH_FIELD_NUM)254) -#define FIT_LENGTH_FIELD_NUM_TOTAL_STROKES ((FIT_LENGTH_FIELD_NUM)5) -#define FIT_LENGTH_FIELD_NUM_AVG_SPEED ((FIT_LENGTH_FIELD_NUM)6) -#define FIT_LENGTH_FIELD_NUM_TOTAL_CALORIES ((FIT_LENGTH_FIELD_NUM)11) -#define FIT_LENGTH_FIELD_NUM_PLAYER_SCORE ((FIT_LENGTH_FIELD_NUM)18) -#define FIT_LENGTH_FIELD_NUM_OPPONENT_SCORE ((FIT_LENGTH_FIELD_NUM)19) -#define FIT_LENGTH_FIELD_NUM_STROKE_COUNT ((FIT_LENGTH_FIELD_NUM)20) -#define FIT_LENGTH_FIELD_NUM_ZONE_COUNT ((FIT_LENGTH_FIELD_NUM)21) -#define FIT_LENGTH_FIELD_NUM_EVENT ((FIT_LENGTH_FIELD_NUM)0) -#define FIT_LENGTH_FIELD_NUM_EVENT_TYPE ((FIT_LENGTH_FIELD_NUM)1) -#define FIT_LENGTH_FIELD_NUM_SWIM_STROKE ((FIT_LENGTH_FIELD_NUM)7) -#define FIT_LENGTH_FIELD_NUM_AVG_SWIMMING_CADENCE ((FIT_LENGTH_FIELD_NUM)9) -#define FIT_LENGTH_FIELD_NUM_EVENT_GROUP ((FIT_LENGTH_FIELD_NUM)10) -#define FIT_LENGTH_FIELD_NUM_LENGTH_TYPE ((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_RECORD_FIELD_NUM)253) -#define FIT_RECORD_FIELD_NUM_POSITION_LAT ((FIT_RECORD_FIELD_NUM)0) -#define FIT_RECORD_FIELD_NUM_POSITION_LONG ((FIT_RECORD_FIELD_NUM)1) -#define FIT_RECORD_FIELD_NUM_DISTANCE ((FIT_RECORD_FIELD_NUM)5) -#define FIT_RECORD_FIELD_NUM_TIME_FROM_COURSE ((FIT_RECORD_FIELD_NUM)11) -#define FIT_RECORD_FIELD_NUM_TOTAL_CYCLES ((FIT_RECORD_FIELD_NUM)19) -#define FIT_RECORD_FIELD_NUM_ACCUMULATED_POWER ((FIT_RECORD_FIELD_NUM)29) -#define FIT_RECORD_FIELD_NUM_ENHANCED_SPEED ((FIT_RECORD_FIELD_NUM)73) -#define FIT_RECORD_FIELD_NUM_ENHANCED_ALTITUDE ((FIT_RECORD_FIELD_NUM)78) -#define FIT_RECORD_FIELD_NUM_ALTITUDE ((FIT_RECORD_FIELD_NUM)2) -#define FIT_RECORD_FIELD_NUM_SPEED ((FIT_RECORD_FIELD_NUM)6) -#define FIT_RECORD_FIELD_NUM_POWER ((FIT_RECORD_FIELD_NUM)7) -#define FIT_RECORD_FIELD_NUM_GRADE ((FIT_RECORD_FIELD_NUM)9) -#define FIT_RECORD_FIELD_NUM_COMPRESSED_ACCUMULATED_POWER ((FIT_RECORD_FIELD_NUM)28) -#define FIT_RECORD_FIELD_NUM_VERTICAL_SPEED ((FIT_RECORD_FIELD_NUM)32) -#define FIT_RECORD_FIELD_NUM_CALORIES ((FIT_RECORD_FIELD_NUM)33) -#define FIT_RECORD_FIELD_NUM_VERTICAL_OSCILLATION ((FIT_RECORD_FIELD_NUM)39) -#define FIT_RECORD_FIELD_NUM_STANCE_TIME_PERCENT ((FIT_RECORD_FIELD_NUM)40) -#define FIT_RECORD_FIELD_NUM_STANCE_TIME ((FIT_RECORD_FIELD_NUM)41) -#define FIT_RECORD_FIELD_NUM_BALL_SPEED ((FIT_RECORD_FIELD_NUM)51) -#define FIT_RECORD_FIELD_NUM_CADENCE256 ((FIT_RECORD_FIELD_NUM)52) -#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC ((FIT_RECORD_FIELD_NUM)54) -#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MIN ((FIT_RECORD_FIELD_NUM)55) -#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MAX ((FIT_RECORD_FIELD_NUM)56) -#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT ((FIT_RECORD_FIELD_NUM)57) -#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MIN ((FIT_RECORD_FIELD_NUM)58) -#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MAX ((FIT_RECORD_FIELD_NUM)59) -#define FIT_RECORD_FIELD_NUM_HEART_RATE ((FIT_RECORD_FIELD_NUM)3) -#define FIT_RECORD_FIELD_NUM_CADENCE ((FIT_RECORD_FIELD_NUM)4) -#define FIT_RECORD_FIELD_NUM_COMPRESSED_SPEED_DISTANCE ((FIT_RECORD_FIELD_NUM)8) -#define FIT_RECORD_FIELD_NUM_RESISTANCE ((FIT_RECORD_FIELD_NUM)10) -#define FIT_RECORD_FIELD_NUM_CYCLE_LENGTH ((FIT_RECORD_FIELD_NUM)12) -#define FIT_RECORD_FIELD_NUM_TEMPERATURE ((FIT_RECORD_FIELD_NUM)13) -#define FIT_RECORD_FIELD_NUM_SPEED_1S ((FIT_RECORD_FIELD_NUM)17) -#define FIT_RECORD_FIELD_NUM_CYCLES ((FIT_RECORD_FIELD_NUM)18) -#define FIT_RECORD_FIELD_NUM_LEFT_RIGHT_BALANCE ((FIT_RECORD_FIELD_NUM)30) -#define FIT_RECORD_FIELD_NUM_GPS_ACCURACY ((FIT_RECORD_FIELD_NUM)31) -#define FIT_RECORD_FIELD_NUM_ACTIVITY_TYPE ((FIT_RECORD_FIELD_NUM)42) -#define FIT_RECORD_FIELD_NUM_LEFT_TORQUE_EFFECTIVENESS ((FIT_RECORD_FIELD_NUM)43) -#define FIT_RECORD_FIELD_NUM_RIGHT_TORQUE_EFFECTIVENESS ((FIT_RECORD_FIELD_NUM)44) -#define FIT_RECORD_FIELD_NUM_LEFT_PEDAL_SMOOTHNESS ((FIT_RECORD_FIELD_NUM)45) -#define FIT_RECORD_FIELD_NUM_RIGHT_PEDAL_SMOOTHNESS ((FIT_RECORD_FIELD_NUM)46) -#define FIT_RECORD_FIELD_NUM_COMBINED_PEDAL_SMOOTHNESS ((FIT_RECORD_FIELD_NUM)47) -#define FIT_RECORD_FIELD_NUM_TIME128 ((FIT_RECORD_FIELD_NUM)48) -#define FIT_RECORD_FIELD_NUM_STROKE_TYPE ((FIT_RECORD_FIELD_NUM)49) -#define FIT_RECORD_FIELD_NUM_ZONE ((FIT_RECORD_FIELD_NUM)50) -#define FIT_RECORD_FIELD_NUM_FRACTIONAL_CADENCE ((FIT_RECORD_FIELD_NUM)53) -#define FIT_RECORD_FIELD_NUM_DEVICE_INDEX ((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_EVENT_FIELD_NUM)253) -#define FIT_EVENT_FIELD_NUM_DATA ((FIT_EVENT_FIELD_NUM)3) -#define FIT_EVENT_FIELD_NUM_DATA16 ((FIT_EVENT_FIELD_NUM)2) -#define FIT_EVENT_FIELD_NUM_SCORE ((FIT_EVENT_FIELD_NUM)7) -#define FIT_EVENT_FIELD_NUM_OPPONENT_SCORE ((FIT_EVENT_FIELD_NUM)8) -#define FIT_EVENT_FIELD_NUM_EVENT ((FIT_EVENT_FIELD_NUM)0) -#define FIT_EVENT_FIELD_NUM_EVENT_TYPE ((FIT_EVENT_FIELD_NUM)1) -#define FIT_EVENT_FIELD_NUM_EVENT_GROUP ((FIT_EVENT_FIELD_NUM)4) -#define FIT_EVENT_FIELD_NUM_FRONT_GEAR_NUM ((FIT_EVENT_FIELD_NUM)9) -#define FIT_EVENT_FIELD_NUM_FRONT_GEAR ((FIT_EVENT_FIELD_NUM)10) -#define FIT_EVENT_FIELD_NUM_REAR_GEAR_NUM ((FIT_EVENT_FIELD_NUM)11) -#define FIT_EVENT_FIELD_NUM_REAR_GEAR ((FIT_EVENT_FIELD_NUM)12) -#define FIT_EVENT_FIELD_NUM_RADAR_THREAT_LEVEL_MAX ((FIT_EVENT_FIELD_NUM)21) -#define FIT_EVENT_FIELD_NUM_RADAR_THREAT_COUNT ((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_DEVICE_INFO_FIELD_NUM)253) -#define FIT_DEVICE_INFO_FIELD_NUM_SERIAL_NUMBER ((FIT_DEVICE_INFO_FIELD_NUM)3) -#define FIT_DEVICE_INFO_FIELD_NUM_CUM_OPERATING_TIME ((FIT_DEVICE_INFO_FIELD_NUM)7) -#define FIT_DEVICE_INFO_FIELD_NUM_PRODUCT_NAME ((FIT_DEVICE_INFO_FIELD_NUM)27) -#define FIT_DEVICE_INFO_FIELD_NUM_MANUFACTURER ((FIT_DEVICE_INFO_FIELD_NUM)2) -#define FIT_DEVICE_INFO_FIELD_NUM_PRODUCT ((FIT_DEVICE_INFO_FIELD_NUM)4) -#define FIT_DEVICE_INFO_FIELD_NUM_SOFTWARE_VERSION ((FIT_DEVICE_INFO_FIELD_NUM)5) -#define FIT_DEVICE_INFO_FIELD_NUM_BATTERY_VOLTAGE ((FIT_DEVICE_INFO_FIELD_NUM)10) -#define FIT_DEVICE_INFO_FIELD_NUM_ANT_DEVICE_NUMBER ((FIT_DEVICE_INFO_FIELD_NUM)21) -#define FIT_DEVICE_INFO_FIELD_NUM_DEVICE_INDEX ((FIT_DEVICE_INFO_FIELD_NUM)0) -#define FIT_DEVICE_INFO_FIELD_NUM_DEVICE_TYPE ((FIT_DEVICE_INFO_FIELD_NUM)1) -#define FIT_DEVICE_INFO_FIELD_NUM_HARDWARE_VERSION ((FIT_DEVICE_INFO_FIELD_NUM)6) -#define FIT_DEVICE_INFO_FIELD_NUM_BATTERY_STATUS ((FIT_DEVICE_INFO_FIELD_NUM)11) -#define FIT_DEVICE_INFO_FIELD_NUM_SENSOR_POSITION ((FIT_DEVICE_INFO_FIELD_NUM)18) -#define FIT_DEVICE_INFO_FIELD_NUM_DESCRIPTOR ((FIT_DEVICE_INFO_FIELD_NUM)19) -#define FIT_DEVICE_INFO_FIELD_NUM_ANT_TRANSMISSION_TYPE ((FIT_DEVICE_INFO_FIELD_NUM)20) -#define FIT_DEVICE_INFO_FIELD_NUM_ANT_NETWORK ((FIT_DEVICE_INFO_FIELD_NUM)22) -#define FIT_DEVICE_INFO_FIELD_NUM_SOURCE_TYPE ((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; - -// 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_TRAINING_FILE_FIELD_NUM)253) -#define FIT_TRAINING_FILE_FIELD_NUM_SERIAL_NUMBER ((FIT_TRAINING_FILE_FIELD_NUM)3) -#define FIT_TRAINING_FILE_FIELD_NUM_TIME_CREATED ((FIT_TRAINING_FILE_FIELD_NUM)4) -#define FIT_TRAINING_FILE_FIELD_NUM_MANUFACTURER ((FIT_TRAINING_FILE_FIELD_NUM)1) -#define FIT_TRAINING_FILE_FIELD_NUM_PRODUCT ((FIT_TRAINING_FILE_FIELD_NUM)2) -#define FIT_TRAINING_FILE_FIELD_NUM_TYPE ((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; - -// 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_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; - -// 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_WEATHER_CONDITIONS_FIELD_NUM)253) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_LOCATION ((FIT_WEATHER_CONDITIONS_FIELD_NUM)8) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_AT_TIME ((FIT_WEATHER_CONDITIONS_FIELD_NUM)9) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LAT ((FIT_WEATHER_CONDITIONS_FIELD_NUM)10) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LONG ((FIT_WEATHER_CONDITIONS_FIELD_NUM)11) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_DIRECTION ((FIT_WEATHER_CONDITIONS_FIELD_NUM)3) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_SPEED ((FIT_WEATHER_CONDITIONS_FIELD_NUM)4) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WEATHER_REPORT ((FIT_WEATHER_CONDITIONS_FIELD_NUM)0) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE ((FIT_WEATHER_CONDITIONS_FIELD_NUM)1) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_CONDITION ((FIT_WEATHER_CONDITIONS_FIELD_NUM)2) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_PRECIPITATION_PROBABILITY ((FIT_WEATHER_CONDITIONS_FIELD_NUM)5) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE_FEELS_LIKE ((FIT_WEATHER_CONDITIONS_FIELD_NUM)6) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_RELATIVE_HUMIDITY ((FIT_WEATHER_CONDITIONS_FIELD_NUM)7) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_DAY_OF_WEEK ((FIT_WEATHER_CONDITIONS_FIELD_NUM)12) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_HIGH_TEMPERATURE ((FIT_WEATHER_CONDITIONS_FIELD_NUM)13) -#define FIT_WEATHER_CONDITIONS_FIELD_NUM_LOW_TEMPERATURE ((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_WEATHER_ALERT_FIELD_NUM)253) -#define FIT_WEATHER_ALERT_FIELD_NUM_REPORT_ID ((FIT_WEATHER_ALERT_FIELD_NUM)0) -#define FIT_WEATHER_ALERT_FIELD_NUM_ISSUE_TIME ((FIT_WEATHER_ALERT_FIELD_NUM)1) -#define FIT_WEATHER_ALERT_FIELD_NUM_EXPIRE_TIME ((FIT_WEATHER_ALERT_FIELD_NUM)2) -#define FIT_WEATHER_ALERT_FIELD_NUM_SEVERITY ((FIT_WEATHER_ALERT_FIELD_NUM)3) -#define FIT_WEATHER_ALERT_FIELD_NUM_TYPE ((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_NMEA_SENTENCE_FIELD_NUM)253) -#define FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP_MS ((FIT_NMEA_SENTENCE_FIELD_NUM)0) -#define FIT_NMEA_SENTENCE_FIELD_NUM_SENTENCE ((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_AVIATION_ATTITUDE_FIELD_NUM)253) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_SYSTEM_TIME ((FIT_AVIATION_ATTITUDE_FIELD_NUM)1) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP_MS ((FIT_AVIATION_ATTITUDE_FIELD_NUM)0) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_PITCH ((FIT_AVIATION_ATTITUDE_FIELD_NUM)2) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ROLL ((FIT_AVIATION_ATTITUDE_FIELD_NUM)3) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_LATERAL ((FIT_AVIATION_ATTITUDE_FIELD_NUM)4) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_NORMAL ((FIT_AVIATION_ATTITUDE_FIELD_NUM)5) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TURN_RATE ((FIT_AVIATION_ATTITUDE_FIELD_NUM)6) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TRACK ((FIT_AVIATION_ATTITUDE_FIELD_NUM)9) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_VALIDITY ((FIT_AVIATION_ATTITUDE_FIELD_NUM)10) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_STAGE ((FIT_AVIATION_ATTITUDE_FIELD_NUM)7) -#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ATTITUDE_STAGE_COMPLETE ((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_VIDEO_TITLE_FIELD_NUM)1) -#define FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_INDEX ((FIT_VIDEO_TITLE_FIELD_NUM)254) -#define FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_COUNT ((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_VIDEO_DESCRIPTION_FIELD_NUM)254) -#define FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_COUNT ((FIT_VIDEO_DESCRIPTION_FIELD_NUM)0) -#define FIT_VIDEO_DESCRIPTION_FIELD_NUM_TEXT ((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_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; - -// 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_COURSE_FIELD_NUM)5) -#define FIT_COURSE_FIELD_NUM_CAPABILITIES ((FIT_COURSE_FIELD_NUM)6) -#define FIT_COURSE_FIELD_NUM_SPORT ((FIT_COURSE_FIELD_NUM)4) -#define FIT_COURSE_FIELD_NUM_SUB_SPORT ((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_COURSE_POINT_FIELD_NUM)1) -#define FIT_COURSE_POINT_FIELD_NUM_POSITION_LAT ((FIT_COURSE_POINT_FIELD_NUM)2) -#define FIT_COURSE_POINT_FIELD_NUM_POSITION_LONG ((FIT_COURSE_POINT_FIELD_NUM)3) -#define FIT_COURSE_POINT_FIELD_NUM_DISTANCE ((FIT_COURSE_POINT_FIELD_NUM)4) -#define FIT_COURSE_POINT_FIELD_NUM_NAME ((FIT_COURSE_POINT_FIELD_NUM)6) -#define FIT_COURSE_POINT_FIELD_NUM_MESSAGE_INDEX ((FIT_COURSE_POINT_FIELD_NUM)254) -#define FIT_COURSE_POINT_FIELD_NUM_TYPE ((FIT_COURSE_POINT_FIELD_NUM)5) -#define FIT_COURSE_POINT_FIELD_NUM_FAVORITE ((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_SEGMENT_ID_FIELD_NUM)4) -#define FIT_SEGMENT_ID_FIELD_NUM_DEVICE_ID ((FIT_SEGMENT_ID_FIELD_NUM)5) -#define FIT_SEGMENT_ID_FIELD_NUM_NAME ((FIT_SEGMENT_ID_FIELD_NUM)0) -#define FIT_SEGMENT_ID_FIELD_NUM_UUID ((FIT_SEGMENT_ID_FIELD_NUM)1) -#define FIT_SEGMENT_ID_FIELD_NUM_SPORT ((FIT_SEGMENT_ID_FIELD_NUM)2) -#define FIT_SEGMENT_ID_FIELD_NUM_ENABLED ((FIT_SEGMENT_ID_FIELD_NUM)3) -#define FIT_SEGMENT_ID_FIELD_NUM_DEFAULT_RACE_LEADER ((FIT_SEGMENT_ID_FIELD_NUM)6) -#define FIT_SEGMENT_ID_FIELD_NUM_DELETE_STATUS ((FIT_SEGMENT_ID_FIELD_NUM)7) -#define FIT_SEGMENT_ID_FIELD_NUM_SELECTION_TYPE ((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_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)2) -#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_ACTIVITY_ID ((FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)3) -#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_SEGMENT_TIME ((FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)4) -#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_MESSAGE_INDEX ((FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)254) -#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_NAME ((FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)0) -#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_TYPE ((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_SEGMENT_POINT_FIELD_NUM)1) -#define FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LONG ((FIT_SEGMENT_POINT_FIELD_NUM)2) -#define FIT_SEGMENT_POINT_FIELD_NUM_DISTANCE ((FIT_SEGMENT_POINT_FIELD_NUM)3) -#define FIT_SEGMENT_POINT_FIELD_NUM_LEADER_TIME ((FIT_SEGMENT_POINT_FIELD_NUM)5) -#define FIT_SEGMENT_POINT_FIELD_NUM_MESSAGE_INDEX ((FIT_SEGMENT_POINT_FIELD_NUM)254) -#define FIT_SEGMENT_POINT_FIELD_NUM_ALTITUDE ((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_SEGMENT_LAP_FIELD_NUM)253) -#define FIT_SEGMENT_LAP_FIELD_NUM_START_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)2) -#define FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LAT ((FIT_SEGMENT_LAP_FIELD_NUM)3) -#define FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LONG ((FIT_SEGMENT_LAP_FIELD_NUM)4) -#define FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LAT ((FIT_SEGMENT_LAP_FIELD_NUM)5) -#define FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LONG ((FIT_SEGMENT_LAP_FIELD_NUM)6) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)7) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)8) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DISTANCE ((FIT_SEGMENT_LAP_FIELD_NUM)9) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CYCLES ((FIT_SEGMENT_LAP_FIELD_NUM)10) -#define FIT_SEGMENT_LAP_FIELD_NUM_NEC_LAT ((FIT_SEGMENT_LAP_FIELD_NUM)25) -#define FIT_SEGMENT_LAP_FIELD_NUM_NEC_LONG ((FIT_SEGMENT_LAP_FIELD_NUM)26) -#define FIT_SEGMENT_LAP_FIELD_NUM_SWC_LAT ((FIT_SEGMENT_LAP_FIELD_NUM)27) -#define FIT_SEGMENT_LAP_FIELD_NUM_SWC_LONG ((FIT_SEGMENT_LAP_FIELD_NUM)28) -#define FIT_SEGMENT_LAP_FIELD_NUM_NAME ((FIT_SEGMENT_LAP_FIELD_NUM)29) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_WORK ((FIT_SEGMENT_LAP_FIELD_NUM)33) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_MOVING_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)44) -#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_HR_ZONE ((FIT_SEGMENT_LAP_FIELD_NUM)49) -#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE ((FIT_SEGMENT_LAP_FIELD_NUM)50) -#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE ((FIT_SEGMENT_LAP_FIELD_NUM)51) -#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE ((FIT_SEGMENT_LAP_FIELD_NUM)52) -#define FIT_SEGMENT_LAP_FIELD_NUM_ACTIVE_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)56) -#define FIT_SEGMENT_LAP_FIELD_NUM_MESSAGE_INDEX ((FIT_SEGMENT_LAP_FIELD_NUM)254) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CALORIES ((FIT_SEGMENT_LAP_FIELD_NUM)11) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES ((FIT_SEGMENT_LAP_FIELD_NUM)12) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)13) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)14) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POWER ((FIT_SEGMENT_LAP_FIELD_NUM)19) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POWER ((FIT_SEGMENT_LAP_FIELD_NUM)20) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ASCENT ((FIT_SEGMENT_LAP_FIELD_NUM)21) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DESCENT ((FIT_SEGMENT_LAP_FIELD_NUM)22) -#define FIT_SEGMENT_LAP_FIELD_NUM_NORMALIZED_POWER ((FIT_SEGMENT_LAP_FIELD_NUM)30) -#define FIT_SEGMENT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE ((FIT_SEGMENT_LAP_FIELD_NUM)31) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_ALTITUDE ((FIT_SEGMENT_LAP_FIELD_NUM)34) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_ALTITUDE ((FIT_SEGMENT_LAP_FIELD_NUM)35) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)37) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)38) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)39) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)40) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)41) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)45) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)46) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)47) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)48) -#define FIT_SEGMENT_LAP_FIELD_NUM_REPETITION_NUM ((FIT_SEGMENT_LAP_FIELD_NUM)53) -#define FIT_SEGMENT_LAP_FIELD_NUM_MIN_ALTITUDE ((FIT_SEGMENT_LAP_FIELD_NUM)54) -#define FIT_SEGMENT_LAP_FIELD_NUM_WKT_STEP_INDEX ((FIT_SEGMENT_LAP_FIELD_NUM)57) -#define FIT_SEGMENT_LAP_FIELD_NUM_FRONT_GEAR_SHIFT_COUNT ((FIT_SEGMENT_LAP_FIELD_NUM)69) -#define FIT_SEGMENT_LAP_FIELD_NUM_REAR_GEAR_SHIFT_COUNT ((FIT_SEGMENT_LAP_FIELD_NUM)70) -#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT ((FIT_SEGMENT_LAP_FIELD_NUM)0) -#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT_TYPE ((FIT_SEGMENT_LAP_FIELD_NUM)1) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_HEART_RATE ((FIT_SEGMENT_LAP_FIELD_NUM)15) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_HEART_RATE ((FIT_SEGMENT_LAP_FIELD_NUM)16) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_CADENCE ((FIT_SEGMENT_LAP_FIELD_NUM)17) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_CADENCE ((FIT_SEGMENT_LAP_FIELD_NUM)18) -#define FIT_SEGMENT_LAP_FIELD_NUM_SPORT ((FIT_SEGMENT_LAP_FIELD_NUM)23) -#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT_GROUP ((FIT_SEGMENT_LAP_FIELD_NUM)24) -#define FIT_SEGMENT_LAP_FIELD_NUM_SUB_SPORT ((FIT_SEGMENT_LAP_FIELD_NUM)32) -#define FIT_SEGMENT_LAP_FIELD_NUM_GPS_ACCURACY ((FIT_SEGMENT_LAP_FIELD_NUM)36) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_TEMPERATURE ((FIT_SEGMENT_LAP_FIELD_NUM)42) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_TEMPERATURE ((FIT_SEGMENT_LAP_FIELD_NUM)43) -#define FIT_SEGMENT_LAP_FIELD_NUM_MIN_HEART_RATE ((FIT_SEGMENT_LAP_FIELD_NUM)55) -#define FIT_SEGMENT_LAP_FIELD_NUM_SPORT_EVENT ((FIT_SEGMENT_LAP_FIELD_NUM)58) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_TORQUE_EFFECTIVENESS ((FIT_SEGMENT_LAP_FIELD_NUM)59) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_TORQUE_EFFECTIVENESS ((FIT_SEGMENT_LAP_FIELD_NUM)60) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_PEDAL_SMOOTHNESS ((FIT_SEGMENT_LAP_FIELD_NUM)61) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_PEDAL_SMOOTHNESS ((FIT_SEGMENT_LAP_FIELD_NUM)62) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_COMBINED_PEDAL_SMOOTHNESS ((FIT_SEGMENT_LAP_FIELD_NUM)63) -#define FIT_SEGMENT_LAP_FIELD_NUM_STATUS ((FIT_SEGMENT_LAP_FIELD_NUM)64) -#define FIT_SEGMENT_LAP_FIELD_NUM_UUID ((FIT_SEGMENT_LAP_FIELD_NUM)65) -#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE ((FIT_SEGMENT_LAP_FIELD_NUM)66) -#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE ((FIT_SEGMENT_LAP_FIELD_NUM)67) -#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES ((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_SEGMENT_FILE_FIELD_NUM)4) -#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_GROUP_PRIMARY_KEY ((FIT_SEGMENT_FILE_FIELD_NUM)8) -#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_ACTIVITY_ID ((FIT_SEGMENT_FILE_FIELD_NUM)9) -#define FIT_SEGMENT_FILE_FIELD_NUM_MESSAGE_INDEX ((FIT_SEGMENT_FILE_FIELD_NUM)254) -#define FIT_SEGMENT_FILE_FIELD_NUM_FILE_UUID ((FIT_SEGMENT_FILE_FIELD_NUM)1) -#define FIT_SEGMENT_FILE_FIELD_NUM_ENABLED ((FIT_SEGMENT_FILE_FIELD_NUM)3) -#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_TYPE ((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 27 -#define FIT_WORKOUT_MESG_DEF_SIZE 26 -#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_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_WORKOUT_FIELD_NUM)5) -#define FIT_WORKOUT_FIELD_NUM_WKT_NAME ((FIT_WORKOUT_FIELD_NUM)8) -#define FIT_WORKOUT_FIELD_NUM_NUM_VALID_STEPS ((FIT_WORKOUT_FIELD_NUM)6) -#define FIT_WORKOUT_FIELD_NUM_POOL_LENGTH ((FIT_WORKOUT_FIELD_NUM)14) -#define FIT_WORKOUT_FIELD_NUM_SPORT ((FIT_WORKOUT_FIELD_NUM)4) -#define FIT_WORKOUT_FIELD_NUM_SUB_SPORT ((FIT_WORKOUT_FIELD_NUM)11) -#define FIT_WORKOUT_FIELD_NUM_POOL_LENGTH_UNIT ((FIT_WORKOUT_FIELD_NUM)15) - -typedef enum -{ - FIT_WORKOUT_MESG_CAPABILITIES, - FIT_WORKOUT_MESG_WKT_NAME, - 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_WORKOUT_SESSION_FIELD_NUM)254) -#define FIT_WORKOUT_SESSION_FIELD_NUM_NUM_VALID_STEPS ((FIT_WORKOUT_SESSION_FIELD_NUM)2) -#define FIT_WORKOUT_SESSION_FIELD_NUM_FIRST_STEP_INDEX ((FIT_WORKOUT_SESSION_FIELD_NUM)3) -#define FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH ((FIT_WORKOUT_SESSION_FIELD_NUM)4) -#define FIT_WORKOUT_SESSION_FIELD_NUM_SPORT ((FIT_WORKOUT_SESSION_FIELD_NUM)0) -#define FIT_WORKOUT_SESSION_FIELD_NUM_SUB_SPORT ((FIT_WORKOUT_SESSION_FIELD_NUM)1) -#define FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT ((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 90 -#define FIT_WORKOUT_STEP_MESG_DEF_SIZE 41 -#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_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_WORKOUT_STEP_MESG; - -typedef FIT_UINT8 FIT_WORKOUT_STEP_FIELD_NUM; - -#define FIT_WORKOUT_STEP_FIELD_NUM_WKT_STEP_NAME ((FIT_WORKOUT_STEP_FIELD_NUM)0) -#define FIT_WORKOUT_STEP_FIELD_NUM_DURATION_VALUE ((FIT_WORKOUT_STEP_FIELD_NUM)2) -#define FIT_WORKOUT_STEP_FIELD_NUM_TARGET_VALUE ((FIT_WORKOUT_STEP_FIELD_NUM)4) -#define FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_LOW ((FIT_WORKOUT_STEP_FIELD_NUM)5) -#define FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_HIGH ((FIT_WORKOUT_STEP_FIELD_NUM)6) -#define FIT_WORKOUT_STEP_FIELD_NUM_MESSAGE_INDEX ((FIT_WORKOUT_STEP_FIELD_NUM)254) -#define FIT_WORKOUT_STEP_FIELD_NUM_EXERCISE_CATEGORY ((FIT_WORKOUT_STEP_FIELD_NUM)10) -#define FIT_WORKOUT_STEP_FIELD_NUM_DURATION_TYPE ((FIT_WORKOUT_STEP_FIELD_NUM)1) -#define FIT_WORKOUT_STEP_FIELD_NUM_TARGET_TYPE ((FIT_WORKOUT_STEP_FIELD_NUM)3) -#define FIT_WORKOUT_STEP_FIELD_NUM_INTENSITY ((FIT_WORKOUT_STEP_FIELD_NUM)7) -#define FIT_WORKOUT_STEP_FIELD_NUM_NOTES ((FIT_WORKOUT_STEP_FIELD_NUM)8) -#define FIT_WORKOUT_STEP_FIELD_NUM_EQUIPMENT ((FIT_WORKOUT_STEP_FIELD_NUM)9) - -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_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_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_EXERCISE_TITLE_FIELD_NUM)2) -#define FIT_EXERCISE_TITLE_FIELD_NUM_MESSAGE_INDEX ((FIT_EXERCISE_TITLE_FIELD_NUM)254) -#define FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_CATEGORY ((FIT_EXERCISE_TITLE_FIELD_NUM)0) -#define FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_NAME ((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_SCHEDULE_FIELD_NUM)2) -#define FIT_SCHEDULE_FIELD_NUM_TIME_CREATED ((FIT_SCHEDULE_FIELD_NUM)3) -#define FIT_SCHEDULE_FIELD_NUM_SCHEDULED_TIME ((FIT_SCHEDULE_FIELD_NUM)6) -#define FIT_SCHEDULE_FIELD_NUM_MANUFACTURER ((FIT_SCHEDULE_FIELD_NUM)0) -#define FIT_SCHEDULE_FIELD_NUM_PRODUCT ((FIT_SCHEDULE_FIELD_NUM)1) -#define FIT_SCHEDULE_FIELD_NUM_COMPLETED ((FIT_SCHEDULE_FIELD_NUM)4) -#define FIT_SCHEDULE_FIELD_NUM_TYPE ((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_TOTALS_FIELD_NUM)253) -#define FIT_TOTALS_FIELD_NUM_TIMER_TIME ((FIT_TOTALS_FIELD_NUM)0) -#define FIT_TOTALS_FIELD_NUM_DISTANCE ((FIT_TOTALS_FIELD_NUM)1) -#define FIT_TOTALS_FIELD_NUM_CALORIES ((FIT_TOTALS_FIELD_NUM)2) -#define FIT_TOTALS_FIELD_NUM_ELAPSED_TIME ((FIT_TOTALS_FIELD_NUM)4) -#define FIT_TOTALS_FIELD_NUM_ACTIVE_TIME ((FIT_TOTALS_FIELD_NUM)6) -#define FIT_TOTALS_FIELD_NUM_MESSAGE_INDEX ((FIT_TOTALS_FIELD_NUM)254) -#define FIT_TOTALS_FIELD_NUM_SESSIONS ((FIT_TOTALS_FIELD_NUM)5) -#define FIT_TOTALS_FIELD_NUM_SPORT ((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 25 -#define FIT_WEIGHT_SCALE_MESG_DEF_SIZE 44 - -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_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_WEIGHT_SCALE_FIELD_NUM)253) -#define FIT_WEIGHT_SCALE_FIELD_NUM_WEIGHT ((FIT_WEIGHT_SCALE_FIELD_NUM)0) -#define FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_FAT ((FIT_WEIGHT_SCALE_FIELD_NUM)1) -#define FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_HYDRATION ((FIT_WEIGHT_SCALE_FIELD_NUM)2) -#define FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_MASS ((FIT_WEIGHT_SCALE_FIELD_NUM)3) -#define FIT_WEIGHT_SCALE_FIELD_NUM_BONE_MASS ((FIT_WEIGHT_SCALE_FIELD_NUM)4) -#define FIT_WEIGHT_SCALE_FIELD_NUM_MUSCLE_MASS ((FIT_WEIGHT_SCALE_FIELD_NUM)5) -#define FIT_WEIGHT_SCALE_FIELD_NUM_BASAL_MET ((FIT_WEIGHT_SCALE_FIELD_NUM)7) -#define FIT_WEIGHT_SCALE_FIELD_NUM_ACTIVE_MET ((FIT_WEIGHT_SCALE_FIELD_NUM)9) -#define FIT_WEIGHT_SCALE_FIELD_NUM_USER_PROFILE_INDEX ((FIT_WEIGHT_SCALE_FIELD_NUM)12) -#define FIT_WEIGHT_SCALE_FIELD_NUM_PHYSIQUE_RATING ((FIT_WEIGHT_SCALE_FIELD_NUM)8) -#define FIT_WEIGHT_SCALE_FIELD_NUM_METABOLIC_AGE ((FIT_WEIGHT_SCALE_FIELD_NUM)10) -#define FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_RATING ((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_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_BLOOD_PRESSURE_FIELD_NUM)253) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_SYSTOLIC_PRESSURE ((FIT_BLOOD_PRESSURE_FIELD_NUM)0) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_DIASTOLIC_PRESSURE ((FIT_BLOOD_PRESSURE_FIELD_NUM)1) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_MEAN_ARTERIAL_PRESSURE ((FIT_BLOOD_PRESSURE_FIELD_NUM)2) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_3_SAMPLE_MEAN ((FIT_BLOOD_PRESSURE_FIELD_NUM)3) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_MORNING_VALUES ((FIT_BLOOD_PRESSURE_FIELD_NUM)4) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_EVENING_VALUES ((FIT_BLOOD_PRESSURE_FIELD_NUM)5) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_USER_PROFILE_INDEX ((FIT_BLOOD_PRESSURE_FIELD_NUM)9) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE ((FIT_BLOOD_PRESSURE_FIELD_NUM)6) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE_TYPE ((FIT_BLOOD_PRESSURE_FIELD_NUM)7) -#define FIT_BLOOD_PRESSURE_FIELD_NUM_STATUS ((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_MONITORING_INFO_FIELD_NUM)253) -#define FIT_MONITORING_INFO_FIELD_NUM_LOCAL_TIMESTAMP ((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_MONITORING_FIELD_NUM)253) -#define FIT_MONITORING_FIELD_NUM_DISTANCE ((FIT_MONITORING_FIELD_NUM)2) -#define FIT_MONITORING_FIELD_NUM_CYCLES ((FIT_MONITORING_FIELD_NUM)3) -#define FIT_MONITORING_FIELD_NUM_ACTIVE_TIME ((FIT_MONITORING_FIELD_NUM)4) -#define FIT_MONITORING_FIELD_NUM_LOCAL_TIMESTAMP ((FIT_MONITORING_FIELD_NUM)11) -#define FIT_MONITORING_FIELD_NUM_CALORIES ((FIT_MONITORING_FIELD_NUM)1) -#define FIT_MONITORING_FIELD_NUM_DISTANCE_16 ((FIT_MONITORING_FIELD_NUM)8) -#define FIT_MONITORING_FIELD_NUM_CYCLES_16 ((FIT_MONITORING_FIELD_NUM)9) -#define FIT_MONITORING_FIELD_NUM_ACTIVE_TIME_16 ((FIT_MONITORING_FIELD_NUM)10) -#define FIT_MONITORING_FIELD_NUM_DEVICE_INDEX ((FIT_MONITORING_FIELD_NUM)0) -#define FIT_MONITORING_FIELD_NUM_ACTIVITY_TYPE ((FIT_MONITORING_FIELD_NUM)5) -#define FIT_MONITORING_FIELD_NUM_ACTIVITY_SUBTYPE ((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; - -// 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_HR_FIELD_NUM)253) -#define FIT_HR_FIELD_NUM_EVENT_TIMESTAMP ((FIT_HR_FIELD_NUM)9) -#define FIT_HR_FIELD_NUM_FRACTIONAL_TIMESTAMP ((FIT_HR_FIELD_NUM)0) -#define FIT_HR_FIELD_NUM_TIME256 ((FIT_HR_FIELD_NUM)1) -#define FIT_HR_FIELD_NUM_FILTERED_BPM ((FIT_HR_FIELD_NUM)6) -#define FIT_HR_FIELD_NUM_EVENT_TIMESTAMP_12 ((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_ANT_RX_FIELD_NUM)253) -#define FIT_ANT_RX_FIELD_NUM_DATA ((FIT_ANT_RX_FIELD_NUM)4) -#define FIT_ANT_RX_FIELD_NUM_FRACTIONAL_TIMESTAMP ((FIT_ANT_RX_FIELD_NUM)0) -#define FIT_ANT_RX_FIELD_NUM_MESG_ID ((FIT_ANT_RX_FIELD_NUM)1) -#define FIT_ANT_RX_FIELD_NUM_MESG_DATA ((FIT_ANT_RX_FIELD_NUM)2) -#define FIT_ANT_RX_FIELD_NUM_CHANNEL_NUMBER ((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_ANT_TX_FIELD_NUM)253) -#define FIT_ANT_TX_FIELD_NUM_DATA ((FIT_ANT_TX_FIELD_NUM)4) -#define FIT_ANT_TX_FIELD_NUM_FRACTIONAL_TIMESTAMP ((FIT_ANT_TX_FIELD_NUM)0) -#define FIT_ANT_TX_FIELD_NUM_MESG_ID ((FIT_ANT_TX_FIELD_NUM)1) -#define FIT_ANT_TX_FIELD_NUM_MESG_DATA ((FIT_ANT_TX_FIELD_NUM)2) -#define FIT_ANT_TX_FIELD_NUM_CHANNEL_NUMBER ((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_EXD_SCREEN_CONFIGURATION_FIELD_NUM)0) -#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_FIELD_COUNT ((FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM)1) -#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_LAYOUT ((FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM)2) -#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_ENABLED ((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_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)0) -#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD ((FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)1) -#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_FIELD_ID ((FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)2) -#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_COUNT ((FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)3) -#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_DISPLAY_TYPE ((FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)4) -#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_TITLE ((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_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)0) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)1) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_FIELD_ID ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)2) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_INDEX ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)3) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_PAGE ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)4) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_KEY ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)5) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCALING ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)6) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_UNITS ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)8) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_QUALIFIER ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)9) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DESCRIPTOR ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)10) -#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_IS_SIGNED ((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; - -// 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_FIELD_DESCRIPTION_FIELD_NUM)3) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS ((FIT_FIELD_DESCRIPTION_FIELD_NUM)8) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_UNIT_ID ((FIT_FIELD_DESCRIPTION_FIELD_NUM)13) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_MESG_NUM ((FIT_FIELD_DESCRIPTION_FIELD_NUM)14) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX ((FIT_FIELD_DESCRIPTION_FIELD_NUM)0) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER ((FIT_FIELD_DESCRIPTION_FIELD_NUM)1) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID ((FIT_FIELD_DESCRIPTION_FIELD_NUM)2) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_SCALE ((FIT_FIELD_DESCRIPTION_FIELD_NUM)6) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_OFFSET ((FIT_FIELD_DESCRIPTION_FIELD_NUM)7) -#define FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_FIELD_NUM ((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_DEVELOPER_DATA_ID_FIELD_NUM)0) -#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_ID ((FIT_DEVELOPER_DATA_ID_FIELD_NUM)1) -#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_VERSION ((FIT_DEVELOPER_DATA_ID_FIELD_NUM)4) -#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_MANUFACTURER_ID ((FIT_DEVELOPER_DATA_ID_FIELD_NUM)2) -#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_DATA_INDEX ((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; - -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_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_TRAINING_FILE, - FIT_MESG_HRV, - 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_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_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_FIELD_DESCRIPTION, - FIT_MESG_DEVELOPER_DATA_ID, - 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_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_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) - + +// 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_FILE_ID_FIELD_NUM)3) +#define FIT_FILE_ID_FIELD_NUM_TIME_CREATED ((FIT_FILE_ID_FIELD_NUM)4) +#define FIT_FILE_ID_FIELD_NUM_PRODUCT_NAME ((FIT_FILE_ID_FIELD_NUM)8) +#define FIT_FILE_ID_FIELD_NUM_MANUFACTURER ((FIT_FILE_ID_FIELD_NUM)1) +#define FIT_FILE_ID_FIELD_NUM_PRODUCT ((FIT_FILE_ID_FIELD_NUM)2) +#define FIT_FILE_ID_FIELD_NUM_NUMBER ((FIT_FILE_ID_FIELD_NUM)5) +#define FIT_FILE_ID_FIELD_NUM_TYPE ((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_FILE_CREATOR_FIELD_NUM)0) +#define FIT_FILE_CREATOR_FIELD_NUM_HARDWARE_VERSION ((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_SOFTWARE_FIELD_NUM)5) +#define FIT_SOFTWARE_FIELD_NUM_MESSAGE_INDEX ((FIT_SOFTWARE_FIELD_NUM)254) +#define FIT_SOFTWARE_FIELD_NUM_VERSION ((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_SLAVE_DEVICE_FIELD_NUM)0) +#define FIT_SLAVE_DEVICE_FIELD_NUM_PRODUCT ((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_CAPABILITIES_FIELD_NUM)0) +#define FIT_CAPABILITIES_FIELD_NUM_WORKOUTS_SUPPORTED ((FIT_CAPABILITIES_FIELD_NUM)21) +#define FIT_CAPABILITIES_FIELD_NUM_CONNECTIVITY_SUPPORTED ((FIT_CAPABILITIES_FIELD_NUM)23) +#define FIT_CAPABILITIES_FIELD_NUM_SPORTS ((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_FILE_CAPABILITIES_FIELD_NUM)2) +#define FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_SIZE ((FIT_FILE_CAPABILITIES_FIELD_NUM)4) +#define FIT_FILE_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX ((FIT_FILE_CAPABILITIES_FIELD_NUM)254) +#define FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_COUNT ((FIT_FILE_CAPABILITIES_FIELD_NUM)3) +#define FIT_FILE_CAPABILITIES_FIELD_NUM_TYPE ((FIT_FILE_CAPABILITIES_FIELD_NUM)0) +#define FIT_FILE_CAPABILITIES_FIELD_NUM_FLAGS ((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_MESG_CAPABILITIES_FIELD_NUM)254) +#define FIT_MESG_CAPABILITIES_FIELD_NUM_MESG_NUM ((FIT_MESG_CAPABILITIES_FIELD_NUM)1) +#define FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT ((FIT_MESG_CAPABILITIES_FIELD_NUM)3) +#define FIT_MESG_CAPABILITIES_FIELD_NUM_FILE ((FIT_MESG_CAPABILITIES_FIELD_NUM)0) +#define FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT_TYPE ((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_FIELD_CAPABILITIES_FIELD_NUM)254) +#define FIT_FIELD_CAPABILITIES_FIELD_NUM_MESG_NUM ((FIT_FIELD_CAPABILITIES_FIELD_NUM)1) +#define FIT_FIELD_CAPABILITIES_FIELD_NUM_COUNT ((FIT_FIELD_CAPABILITIES_FIELD_NUM)3) +#define FIT_FIELD_CAPABILITIES_FIELD_NUM_FILE ((FIT_FIELD_CAPABILITIES_FIELD_NUM)0) +#define FIT_FIELD_CAPABILITIES_FIELD_NUM_FIELD_NUM ((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_DEVICE_SETTINGS_FIELD_NUM)1) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_OFFSET ((FIT_DEVICE_SETTINGS_FIELD_NUM)2) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_CLOCK_TIME ((FIT_DEVICE_SETTINGS_FIELD_NUM)39) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_PAGES_ENABLED ((FIT_DEVICE_SETTINGS_FIELD_NUM)40) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_DEFAULT_PAGE ((FIT_DEVICE_SETTINGS_FIELD_NUM)57) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_STEPS ((FIT_DEVICE_SETTINGS_FIELD_NUM)58) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_AUTOSYNC_MIN_TIME ((FIT_DEVICE_SETTINGS_FIELD_NUM)59) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVE_TIME_ZONE ((FIT_DEVICE_SETTINGS_FIELD_NUM)0) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_MODE ((FIT_DEVICE_SETTINGS_FIELD_NUM)4) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_TIME_ZONE_OFFSET ((FIT_DEVICE_SETTINGS_FIELD_NUM)5) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_BACKLIGHT_MODE ((FIT_DEVICE_SETTINGS_FIELD_NUM)12) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_ACTIVITY_TRACKER_ENABLED ((FIT_DEVICE_SETTINGS_FIELD_NUM)36) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_MOVE_ALERT_ENABLED ((FIT_DEVICE_SETTINGS_FIELD_NUM)46) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_DATE_MODE ((FIT_DEVICE_SETTINGS_FIELD_NUM)47) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_DISPLAY_ORIENTATION ((FIT_DEVICE_SETTINGS_FIELD_NUM)55) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_MOUNTING_SIDE ((FIT_DEVICE_SETTINGS_FIELD_NUM)56) +#define FIT_DEVICE_SETTINGS_FIELD_NUM_TAP_SENSITIVITY ((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]; // + 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_USER_PROFILE_FIELD_NUM)0) +#define FIT_USER_PROFILE_FIELD_NUM_MESSAGE_INDEX ((FIT_USER_PROFILE_FIELD_NUM)254) +#define FIT_USER_PROFILE_FIELD_NUM_WEIGHT ((FIT_USER_PROFILE_FIELD_NUM)4) +#define FIT_USER_PROFILE_FIELD_NUM_LOCAL_ID ((FIT_USER_PROFILE_FIELD_NUM)22) +#define FIT_USER_PROFILE_FIELD_NUM_USER_RUNNING_STEP_LENGTH ((FIT_USER_PROFILE_FIELD_NUM)31) +#define FIT_USER_PROFILE_FIELD_NUM_USER_WALKING_STEP_LENGTH ((FIT_USER_PROFILE_FIELD_NUM)32) +#define FIT_USER_PROFILE_FIELD_NUM_GENDER ((FIT_USER_PROFILE_FIELD_NUM)1) +#define FIT_USER_PROFILE_FIELD_NUM_AGE ((FIT_USER_PROFILE_FIELD_NUM)2) +#define FIT_USER_PROFILE_FIELD_NUM_HEIGHT ((FIT_USER_PROFILE_FIELD_NUM)3) +#define FIT_USER_PROFILE_FIELD_NUM_LANGUAGE ((FIT_USER_PROFILE_FIELD_NUM)5) +#define FIT_USER_PROFILE_FIELD_NUM_ELEV_SETTING ((FIT_USER_PROFILE_FIELD_NUM)6) +#define FIT_USER_PROFILE_FIELD_NUM_WEIGHT_SETTING ((FIT_USER_PROFILE_FIELD_NUM)7) +#define FIT_USER_PROFILE_FIELD_NUM_RESTING_HEART_RATE ((FIT_USER_PROFILE_FIELD_NUM)8) +#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_RUNNING_HEART_RATE ((FIT_USER_PROFILE_FIELD_NUM)9) +#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_BIKING_HEART_RATE ((FIT_USER_PROFILE_FIELD_NUM)10) +#define FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_HEART_RATE ((FIT_USER_PROFILE_FIELD_NUM)11) +#define FIT_USER_PROFILE_FIELD_NUM_HR_SETTING ((FIT_USER_PROFILE_FIELD_NUM)12) +#define FIT_USER_PROFILE_FIELD_NUM_SPEED_SETTING ((FIT_USER_PROFILE_FIELD_NUM)13) +#define FIT_USER_PROFILE_FIELD_NUM_DIST_SETTING ((FIT_USER_PROFILE_FIELD_NUM)14) +#define FIT_USER_PROFILE_FIELD_NUM_POWER_SETTING ((FIT_USER_PROFILE_FIELD_NUM)16) +#define FIT_USER_PROFILE_FIELD_NUM_ACTIVITY_CLASS ((FIT_USER_PROFILE_FIELD_NUM)17) +#define FIT_USER_PROFILE_FIELD_NUM_POSITION_SETTING ((FIT_USER_PROFILE_FIELD_NUM)18) +#define FIT_USER_PROFILE_FIELD_NUM_TEMPERATURE_SETTING ((FIT_USER_PROFILE_FIELD_NUM)21) +#define FIT_USER_PROFILE_FIELD_NUM_GLOBAL_ID ((FIT_USER_PROFILE_FIELD_NUM)23) +#define FIT_USER_PROFILE_FIELD_NUM_HEIGHT_SETTING ((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_HRM_PROFILE_FIELD_NUM)254) +#define FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID ((FIT_HRM_PROFILE_FIELD_NUM)1) +#define FIT_HRM_PROFILE_FIELD_NUM_ENABLED ((FIT_HRM_PROFILE_FIELD_NUM)0) +#define FIT_HRM_PROFILE_FIELD_NUM_LOG_HRV ((FIT_HRM_PROFILE_FIELD_NUM)2) +#define FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID_TRANS_TYPE ((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_SDM_PROFILE_FIELD_NUM)3) +#define FIT_SDM_PROFILE_FIELD_NUM_MESSAGE_INDEX ((FIT_SDM_PROFILE_FIELD_NUM)254) +#define FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID ((FIT_SDM_PROFILE_FIELD_NUM)1) +#define FIT_SDM_PROFILE_FIELD_NUM_SDM_CAL_FACTOR ((FIT_SDM_PROFILE_FIELD_NUM)2) +#define FIT_SDM_PROFILE_FIELD_NUM_ENABLED ((FIT_SDM_PROFILE_FIELD_NUM)0) +#define FIT_SDM_PROFILE_FIELD_NUM_SPEED_SOURCE ((FIT_SDM_PROFILE_FIELD_NUM)4) +#define FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID_TRANS_TYPE ((FIT_SDM_PROFILE_FIELD_NUM)5) +#define FIT_SDM_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER ((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_BIKE_PROFILE_FIELD_NUM)0) +#define FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER ((FIT_BIKE_PROFILE_FIELD_NUM)3) +#define FIT_BIKE_PROFILE_FIELD_NUM_MESSAGE_INDEX ((FIT_BIKE_PROFILE_FIELD_NUM)254) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID ((FIT_BIKE_PROFILE_FIELD_NUM)4) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID ((FIT_BIKE_PROFILE_FIELD_NUM)5) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID ((FIT_BIKE_PROFILE_FIELD_NUM)6) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID ((FIT_BIKE_PROFILE_FIELD_NUM)7) +#define FIT_BIKE_PROFILE_FIELD_NUM_CUSTOM_WHEELSIZE ((FIT_BIKE_PROFILE_FIELD_NUM)8) +#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEELSIZE ((FIT_BIKE_PROFILE_FIELD_NUM)9) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_WEIGHT ((FIT_BIKE_PROFILE_FIELD_NUM)10) +#define FIT_BIKE_PROFILE_FIELD_NUM_POWER_CAL_FACTOR ((FIT_BIKE_PROFILE_FIELD_NUM)11) +#define FIT_BIKE_PROFILE_FIELD_NUM_SPORT ((FIT_BIKE_PROFILE_FIELD_NUM)1) +#define FIT_BIKE_PROFILE_FIELD_NUM_SUB_SPORT ((FIT_BIKE_PROFILE_FIELD_NUM)2) +#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEEL_CAL ((FIT_BIKE_PROFILE_FIELD_NUM)12) +#define FIT_BIKE_PROFILE_FIELD_NUM_AUTO_POWER_ZERO ((FIT_BIKE_PROFILE_FIELD_NUM)13) +#define FIT_BIKE_PROFILE_FIELD_NUM_ID ((FIT_BIKE_PROFILE_FIELD_NUM)14) +#define FIT_BIKE_PROFILE_FIELD_NUM_SPD_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)15) +#define FIT_BIKE_PROFILE_FIELD_NUM_CAD_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)16) +#define FIT_BIKE_PROFILE_FIELD_NUM_SPDCAD_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)17) +#define FIT_BIKE_PROFILE_FIELD_NUM_POWER_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)18) +#define FIT_BIKE_PROFILE_FIELD_NUM_CRANK_LENGTH ((FIT_BIKE_PROFILE_FIELD_NUM)19) +#define FIT_BIKE_PROFILE_FIELD_NUM_ENABLED ((FIT_BIKE_PROFILE_FIELD_NUM)20) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID_TRANS_TYPE ((FIT_BIKE_PROFILE_FIELD_NUM)21) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID_TRANS_TYPE ((FIT_BIKE_PROFILE_FIELD_NUM)22) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID_TRANS_TYPE ((FIT_BIKE_PROFILE_FIELD_NUM)23) +#define FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID_TRANS_TYPE ((FIT_BIKE_PROFILE_FIELD_NUM)24) +#define FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER ((FIT_BIKE_PROFILE_FIELD_NUM)37) +#define FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR_NUM ((FIT_BIKE_PROFILE_FIELD_NUM)38) +#define FIT_BIKE_PROFILE_FIELD_NUM_FRONT_GEAR ((FIT_BIKE_PROFILE_FIELD_NUM)39) +#define FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR_NUM ((FIT_BIKE_PROFILE_FIELD_NUM)40) +#define FIT_BIKE_PROFILE_FIELD_NUM_REAR_GEAR ((FIT_BIKE_PROFILE_FIELD_NUM)41) +#define FIT_BIKE_PROFILE_FIELD_NUM_SHIMANO_DI2_ENABLED ((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_CONNECTIVITY_FIELD_NUM)3) +#define FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)0) +#define FIT_CONNECTIVITY_FIELD_NUM_BLUETOOTH_LE_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)1) +#define FIT_CONNECTIVITY_FIELD_NUM_ANT_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)2) +#define FIT_CONNECTIVITY_FIELD_NUM_LIVE_TRACKING_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)4) +#define FIT_CONNECTIVITY_FIELD_NUM_WEATHER_CONDITIONS_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)5) +#define FIT_CONNECTIVITY_FIELD_NUM_WEATHER_ALERTS_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)6) +#define FIT_CONNECTIVITY_FIELD_NUM_AUTO_ACTIVITY_UPLOAD_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)7) +#define FIT_CONNECTIVITY_FIELD_NUM_COURSE_DOWNLOAD_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)8) +#define FIT_CONNECTIVITY_FIELD_NUM_WORKOUT_DOWNLOAD_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)9) +#define FIT_CONNECTIVITY_FIELD_NUM_GPS_EPHEMERIS_DOWNLOAD_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)10) +#define FIT_CONNECTIVITY_FIELD_NUM_INCIDENT_DETECTION_ENABLED ((FIT_CONNECTIVITY_FIELD_NUM)11) +#define FIT_CONNECTIVITY_FIELD_NUM_GROUPTRACK_ENABLED ((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_ZONES_TARGET_FIELD_NUM)3) +#define FIT_ZONES_TARGET_FIELD_NUM_MAX_HEART_RATE ((FIT_ZONES_TARGET_FIELD_NUM)1) +#define FIT_ZONES_TARGET_FIELD_NUM_THRESHOLD_HEART_RATE ((FIT_ZONES_TARGET_FIELD_NUM)2) +#define FIT_ZONES_TARGET_FIELD_NUM_HR_CALC_TYPE ((FIT_ZONES_TARGET_FIELD_NUM)5) +#define FIT_ZONES_TARGET_FIELD_NUM_PWR_CALC_TYPE ((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_SPORT_FIELD_NUM)3) +#define FIT_SPORT_FIELD_NUM_SPORT ((FIT_SPORT_FIELD_NUM)0) +#define FIT_SPORT_FIELD_NUM_SUB_SPORT ((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_HR_ZONE_FIELD_NUM)2) +#define FIT_HR_ZONE_FIELD_NUM_MESSAGE_INDEX ((FIT_HR_ZONE_FIELD_NUM)254) +#define FIT_HR_ZONE_FIELD_NUM_HIGH_BPM ((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_SPEED_ZONE_FIELD_NUM)1) +#define FIT_SPEED_ZONE_FIELD_NUM_MESSAGE_INDEX ((FIT_SPEED_ZONE_FIELD_NUM)254) +#define FIT_SPEED_ZONE_FIELD_NUM_HIGH_VALUE ((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_CADENCE_ZONE_FIELD_NUM)1) +#define FIT_CADENCE_ZONE_FIELD_NUM_MESSAGE_INDEX ((FIT_CADENCE_ZONE_FIELD_NUM)254) +#define FIT_CADENCE_ZONE_FIELD_NUM_HIGH_VALUE ((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_POWER_ZONE_FIELD_NUM)2) +#define FIT_POWER_ZONE_FIELD_NUM_MESSAGE_INDEX ((FIT_POWER_ZONE_FIELD_NUM)254) +#define FIT_POWER_ZONE_FIELD_NUM_HIGH_VALUE ((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_MET_ZONE_FIELD_NUM)254) +#define FIT_MET_ZONE_FIELD_NUM_CALORIES ((FIT_MET_ZONE_FIELD_NUM)2) +#define FIT_MET_ZONE_FIELD_NUM_HIGH_BPM ((FIT_MET_ZONE_FIELD_NUM)1) +#define FIT_MET_ZONE_FIELD_NUM_FAT_CALORIES ((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; + +// 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_DIVE_SETTINGS_FIELD_NUM)0) +#define FIT_DIVE_SETTINGS_FIELD_NUM_HEART_RATE_SOURCE ((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_GOAL_FIELD_NUM)2) +#define FIT_GOAL_FIELD_NUM_END_DATE ((FIT_GOAL_FIELD_NUM)3) +#define FIT_GOAL_FIELD_NUM_VALUE ((FIT_GOAL_FIELD_NUM)5) +#define FIT_GOAL_FIELD_NUM_TARGET_VALUE ((FIT_GOAL_FIELD_NUM)7) +#define FIT_GOAL_FIELD_NUM_MESSAGE_INDEX ((FIT_GOAL_FIELD_NUM)254) +#define FIT_GOAL_FIELD_NUM_RECURRENCE_VALUE ((FIT_GOAL_FIELD_NUM)9) +#define FIT_GOAL_FIELD_NUM_SPORT ((FIT_GOAL_FIELD_NUM)0) +#define FIT_GOAL_FIELD_NUM_SUB_SPORT ((FIT_GOAL_FIELD_NUM)1) +#define FIT_GOAL_FIELD_NUM_TYPE ((FIT_GOAL_FIELD_NUM)4) +#define FIT_GOAL_FIELD_NUM_REPEAT ((FIT_GOAL_FIELD_NUM)6) +#define FIT_GOAL_FIELD_NUM_RECURRENCE ((FIT_GOAL_FIELD_NUM)8) +#define FIT_GOAL_FIELD_NUM_ENABLED ((FIT_GOAL_FIELD_NUM)10) +#define FIT_GOAL_FIELD_NUM_SOURCE ((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_ACTIVITY_FIELD_NUM)253) +#define FIT_ACTIVITY_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_ACTIVITY_FIELD_NUM)0) +#define FIT_ACTIVITY_FIELD_NUM_LOCAL_TIMESTAMP ((FIT_ACTIVITY_FIELD_NUM)5) +#define FIT_ACTIVITY_FIELD_NUM_NUM_SESSIONS ((FIT_ACTIVITY_FIELD_NUM)1) +#define FIT_ACTIVITY_FIELD_NUM_TYPE ((FIT_ACTIVITY_FIELD_NUM)2) +#define FIT_ACTIVITY_FIELD_NUM_EVENT ((FIT_ACTIVITY_FIELD_NUM)3) +#define FIT_ACTIVITY_FIELD_NUM_EVENT_TYPE ((FIT_ACTIVITY_FIELD_NUM)4) +#define FIT_ACTIVITY_FIELD_NUM_EVENT_GROUP ((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 209 +#define FIT_SESSION_MESG_DEF_SIZE 278 +#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_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_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_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_SESSION_MESG; + +typedef FIT_UINT8 FIT_SESSION_FIELD_NUM; + +#define FIT_SESSION_FIELD_NUM_TIMESTAMP ((FIT_SESSION_FIELD_NUM)253) +#define FIT_SESSION_FIELD_NUM_START_TIME ((FIT_SESSION_FIELD_NUM)2) +#define FIT_SESSION_FIELD_NUM_START_POSITION_LAT ((FIT_SESSION_FIELD_NUM)3) +#define FIT_SESSION_FIELD_NUM_START_POSITION_LONG ((FIT_SESSION_FIELD_NUM)4) +#define FIT_SESSION_FIELD_NUM_TOTAL_ELAPSED_TIME ((FIT_SESSION_FIELD_NUM)7) +#define FIT_SESSION_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_SESSION_FIELD_NUM)8) +#define FIT_SESSION_FIELD_NUM_TOTAL_DISTANCE ((FIT_SESSION_FIELD_NUM)9) +#define FIT_SESSION_FIELD_NUM_TOTAL_CYCLES ((FIT_SESSION_FIELD_NUM)10) +#define FIT_SESSION_FIELD_NUM_NEC_LAT ((FIT_SESSION_FIELD_NUM)29) +#define FIT_SESSION_FIELD_NUM_NEC_LONG ((FIT_SESSION_FIELD_NUM)30) +#define FIT_SESSION_FIELD_NUM_SWC_LAT ((FIT_SESSION_FIELD_NUM)31) +#define FIT_SESSION_FIELD_NUM_SWC_LONG ((FIT_SESSION_FIELD_NUM)32) +#define FIT_SESSION_FIELD_NUM_AVG_STROKE_COUNT ((FIT_SESSION_FIELD_NUM)41) +#define FIT_SESSION_FIELD_NUM_TOTAL_WORK ((FIT_SESSION_FIELD_NUM)48) +#define FIT_SESSION_FIELD_NUM_TOTAL_MOVING_TIME ((FIT_SESSION_FIELD_NUM)59) +#define FIT_SESSION_FIELD_NUM_TIME_IN_HR_ZONE ((FIT_SESSION_FIELD_NUM)65) +#define FIT_SESSION_FIELD_NUM_TIME_IN_SPEED_ZONE ((FIT_SESSION_FIELD_NUM)66) +#define FIT_SESSION_FIELD_NUM_TIME_IN_CADENCE_ZONE ((FIT_SESSION_FIELD_NUM)67) +#define FIT_SESSION_FIELD_NUM_TIME_IN_POWER_ZONE ((FIT_SESSION_FIELD_NUM)68) +#define FIT_SESSION_FIELD_NUM_AVG_LAP_TIME ((FIT_SESSION_FIELD_NUM)69) +#define FIT_SESSION_FIELD_NUM_ENHANCED_AVG_SPEED ((FIT_SESSION_FIELD_NUM)124) +#define FIT_SESSION_FIELD_NUM_ENHANCED_MAX_SPEED ((FIT_SESSION_FIELD_NUM)125) +#define FIT_SESSION_FIELD_NUM_ENHANCED_AVG_ALTITUDE ((FIT_SESSION_FIELD_NUM)126) +#define FIT_SESSION_FIELD_NUM_ENHANCED_MIN_ALTITUDE ((FIT_SESSION_FIELD_NUM)127) +#define FIT_SESSION_FIELD_NUM_ENHANCED_MAX_ALTITUDE ((FIT_SESSION_FIELD_NUM)128) +#define FIT_SESSION_FIELD_NUM_MESSAGE_INDEX ((FIT_SESSION_FIELD_NUM)254) +#define FIT_SESSION_FIELD_NUM_TOTAL_CALORIES ((FIT_SESSION_FIELD_NUM)11) +#define FIT_SESSION_FIELD_NUM_TOTAL_FAT_CALORIES ((FIT_SESSION_FIELD_NUM)13) +#define FIT_SESSION_FIELD_NUM_AVG_SPEED ((FIT_SESSION_FIELD_NUM)14) +#define FIT_SESSION_FIELD_NUM_MAX_SPEED ((FIT_SESSION_FIELD_NUM)15) +#define FIT_SESSION_FIELD_NUM_AVG_POWER ((FIT_SESSION_FIELD_NUM)20) +#define FIT_SESSION_FIELD_NUM_MAX_POWER ((FIT_SESSION_FIELD_NUM)21) +#define FIT_SESSION_FIELD_NUM_TOTAL_ASCENT ((FIT_SESSION_FIELD_NUM)22) +#define FIT_SESSION_FIELD_NUM_TOTAL_DESCENT ((FIT_SESSION_FIELD_NUM)23) +#define FIT_SESSION_FIELD_NUM_FIRST_LAP_INDEX ((FIT_SESSION_FIELD_NUM)25) +#define FIT_SESSION_FIELD_NUM_NUM_LAPS ((FIT_SESSION_FIELD_NUM)26) +#define FIT_SESSION_FIELD_NUM_NUM_LENGTHS ((FIT_SESSION_FIELD_NUM)33) +#define FIT_SESSION_FIELD_NUM_NORMALIZED_POWER ((FIT_SESSION_FIELD_NUM)34) +#define FIT_SESSION_FIELD_NUM_TRAINING_STRESS_SCORE ((FIT_SESSION_FIELD_NUM)35) +#define FIT_SESSION_FIELD_NUM_INTENSITY_FACTOR ((FIT_SESSION_FIELD_NUM)36) +#define FIT_SESSION_FIELD_NUM_LEFT_RIGHT_BALANCE ((FIT_SESSION_FIELD_NUM)37) +#define FIT_SESSION_FIELD_NUM_AVG_STROKE_DISTANCE ((FIT_SESSION_FIELD_NUM)42) +#define FIT_SESSION_FIELD_NUM_POOL_LENGTH ((FIT_SESSION_FIELD_NUM)44) +#define FIT_SESSION_FIELD_NUM_THRESHOLD_POWER ((FIT_SESSION_FIELD_NUM)45) +#define FIT_SESSION_FIELD_NUM_NUM_ACTIVE_LENGTHS ((FIT_SESSION_FIELD_NUM)47) +#define FIT_SESSION_FIELD_NUM_AVG_ALTITUDE ((FIT_SESSION_FIELD_NUM)49) +#define FIT_SESSION_FIELD_NUM_MAX_ALTITUDE ((FIT_SESSION_FIELD_NUM)50) +#define FIT_SESSION_FIELD_NUM_AVG_GRADE ((FIT_SESSION_FIELD_NUM)52) +#define FIT_SESSION_FIELD_NUM_AVG_POS_GRADE ((FIT_SESSION_FIELD_NUM)53) +#define FIT_SESSION_FIELD_NUM_AVG_NEG_GRADE ((FIT_SESSION_FIELD_NUM)54) +#define FIT_SESSION_FIELD_NUM_MAX_POS_GRADE ((FIT_SESSION_FIELD_NUM)55) +#define FIT_SESSION_FIELD_NUM_MAX_NEG_GRADE ((FIT_SESSION_FIELD_NUM)56) +#define FIT_SESSION_FIELD_NUM_AVG_POS_VERTICAL_SPEED ((FIT_SESSION_FIELD_NUM)60) +#define FIT_SESSION_FIELD_NUM_AVG_NEG_VERTICAL_SPEED ((FIT_SESSION_FIELD_NUM)61) +#define FIT_SESSION_FIELD_NUM_MAX_POS_VERTICAL_SPEED ((FIT_SESSION_FIELD_NUM)62) +#define FIT_SESSION_FIELD_NUM_MAX_NEG_VERTICAL_SPEED ((FIT_SESSION_FIELD_NUM)63) +#define FIT_SESSION_FIELD_NUM_BEST_LAP_INDEX ((FIT_SESSION_FIELD_NUM)70) +#define FIT_SESSION_FIELD_NUM_MIN_ALTITUDE ((FIT_SESSION_FIELD_NUM)71) +#define FIT_SESSION_FIELD_NUM_PLAYER_SCORE ((FIT_SESSION_FIELD_NUM)82) +#define FIT_SESSION_FIELD_NUM_OPPONENT_SCORE ((FIT_SESSION_FIELD_NUM)83) +#define FIT_SESSION_FIELD_NUM_STROKE_COUNT ((FIT_SESSION_FIELD_NUM)85) +#define FIT_SESSION_FIELD_NUM_ZONE_COUNT ((FIT_SESSION_FIELD_NUM)86) +#define FIT_SESSION_FIELD_NUM_MAX_BALL_SPEED ((FIT_SESSION_FIELD_NUM)87) +#define FIT_SESSION_FIELD_NUM_AVG_BALL_SPEED ((FIT_SESSION_FIELD_NUM)88) +#define FIT_SESSION_FIELD_NUM_AVG_VERTICAL_OSCILLATION ((FIT_SESSION_FIELD_NUM)89) +#define FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME_PERCENT ((FIT_SESSION_FIELD_NUM)90) +#define FIT_SESSION_FIELD_NUM_AVG_STANCE_TIME ((FIT_SESSION_FIELD_NUM)91) +#define FIT_SESSION_FIELD_NUM_AVG_VAM ((FIT_SESSION_FIELD_NUM)139) +#define FIT_SESSION_FIELD_NUM_EVENT ((FIT_SESSION_FIELD_NUM)0) +#define FIT_SESSION_FIELD_NUM_EVENT_TYPE ((FIT_SESSION_FIELD_NUM)1) +#define FIT_SESSION_FIELD_NUM_SPORT ((FIT_SESSION_FIELD_NUM)5) +#define FIT_SESSION_FIELD_NUM_SUB_SPORT ((FIT_SESSION_FIELD_NUM)6) +#define FIT_SESSION_FIELD_NUM_AVG_HEART_RATE ((FIT_SESSION_FIELD_NUM)16) +#define FIT_SESSION_FIELD_NUM_MAX_HEART_RATE ((FIT_SESSION_FIELD_NUM)17) +#define FIT_SESSION_FIELD_NUM_AVG_CADENCE ((FIT_SESSION_FIELD_NUM)18) +#define FIT_SESSION_FIELD_NUM_MAX_CADENCE ((FIT_SESSION_FIELD_NUM)19) +#define FIT_SESSION_FIELD_NUM_TOTAL_TRAINING_EFFECT ((FIT_SESSION_FIELD_NUM)24) +#define FIT_SESSION_FIELD_NUM_EVENT_GROUP ((FIT_SESSION_FIELD_NUM)27) +#define FIT_SESSION_FIELD_NUM_TRIGGER ((FIT_SESSION_FIELD_NUM)28) +#define FIT_SESSION_FIELD_NUM_SWIM_STROKE ((FIT_SESSION_FIELD_NUM)43) +#define FIT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT ((FIT_SESSION_FIELD_NUM)46) +#define FIT_SESSION_FIELD_NUM_GPS_ACCURACY ((FIT_SESSION_FIELD_NUM)51) +#define FIT_SESSION_FIELD_NUM_AVG_TEMPERATURE ((FIT_SESSION_FIELD_NUM)57) +#define FIT_SESSION_FIELD_NUM_MAX_TEMPERATURE ((FIT_SESSION_FIELD_NUM)58) +#define FIT_SESSION_FIELD_NUM_MIN_HEART_RATE ((FIT_SESSION_FIELD_NUM)64) +#define FIT_SESSION_FIELD_NUM_OPPONENT_NAME ((FIT_SESSION_FIELD_NUM)84) +#define FIT_SESSION_FIELD_NUM_AVG_FRACTIONAL_CADENCE ((FIT_SESSION_FIELD_NUM)92) +#define FIT_SESSION_FIELD_NUM_MAX_FRACTIONAL_CADENCE ((FIT_SESSION_FIELD_NUM)93) +#define FIT_SESSION_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES ((FIT_SESSION_FIELD_NUM)94) +#define FIT_SESSION_FIELD_NUM_SPORT_INDEX ((FIT_SESSION_FIELD_NUM)111) +#define FIT_SESSION_FIELD_NUM_TOTAL_ANAEROBIC_TRAINING_EFFECT ((FIT_SESSION_FIELD_NUM)137) + +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_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_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_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 189 +#define FIT_LAP_MESG_DEF_SIZE 254 +#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_LAP_MESG; + +typedef FIT_UINT8 FIT_LAP_FIELD_NUM; + +#define FIT_LAP_FIELD_NUM_TIMESTAMP ((FIT_LAP_FIELD_NUM)253) +#define FIT_LAP_FIELD_NUM_START_TIME ((FIT_LAP_FIELD_NUM)2) +#define FIT_LAP_FIELD_NUM_START_POSITION_LAT ((FIT_LAP_FIELD_NUM)3) +#define FIT_LAP_FIELD_NUM_START_POSITION_LONG ((FIT_LAP_FIELD_NUM)4) +#define FIT_LAP_FIELD_NUM_END_POSITION_LAT ((FIT_LAP_FIELD_NUM)5) +#define FIT_LAP_FIELD_NUM_END_POSITION_LONG ((FIT_LAP_FIELD_NUM)6) +#define FIT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME ((FIT_LAP_FIELD_NUM)7) +#define FIT_LAP_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_LAP_FIELD_NUM)8) +#define FIT_LAP_FIELD_NUM_TOTAL_DISTANCE ((FIT_LAP_FIELD_NUM)9) +#define FIT_LAP_FIELD_NUM_TOTAL_CYCLES ((FIT_LAP_FIELD_NUM)10) +#define FIT_LAP_FIELD_NUM_TOTAL_WORK ((FIT_LAP_FIELD_NUM)41) +#define FIT_LAP_FIELD_NUM_TOTAL_MOVING_TIME ((FIT_LAP_FIELD_NUM)52) +#define FIT_LAP_FIELD_NUM_TIME_IN_HR_ZONE ((FIT_LAP_FIELD_NUM)57) +#define FIT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE ((FIT_LAP_FIELD_NUM)58) +#define FIT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE ((FIT_LAP_FIELD_NUM)59) +#define FIT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE ((FIT_LAP_FIELD_NUM)60) +#define FIT_LAP_FIELD_NUM_ENHANCED_AVG_SPEED ((FIT_LAP_FIELD_NUM)110) +#define FIT_LAP_FIELD_NUM_ENHANCED_MAX_SPEED ((FIT_LAP_FIELD_NUM)111) +#define FIT_LAP_FIELD_NUM_ENHANCED_AVG_ALTITUDE ((FIT_LAP_FIELD_NUM)112) +#define FIT_LAP_FIELD_NUM_ENHANCED_MIN_ALTITUDE ((FIT_LAP_FIELD_NUM)113) +#define FIT_LAP_FIELD_NUM_ENHANCED_MAX_ALTITUDE ((FIT_LAP_FIELD_NUM)114) +#define FIT_LAP_FIELD_NUM_MESSAGE_INDEX ((FIT_LAP_FIELD_NUM)254) +#define FIT_LAP_FIELD_NUM_TOTAL_CALORIES ((FIT_LAP_FIELD_NUM)11) +#define FIT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES ((FIT_LAP_FIELD_NUM)12) +#define FIT_LAP_FIELD_NUM_AVG_SPEED ((FIT_LAP_FIELD_NUM)13) +#define FIT_LAP_FIELD_NUM_MAX_SPEED ((FIT_LAP_FIELD_NUM)14) +#define FIT_LAP_FIELD_NUM_AVG_POWER ((FIT_LAP_FIELD_NUM)19) +#define FIT_LAP_FIELD_NUM_MAX_POWER ((FIT_LAP_FIELD_NUM)20) +#define FIT_LAP_FIELD_NUM_TOTAL_ASCENT ((FIT_LAP_FIELD_NUM)21) +#define FIT_LAP_FIELD_NUM_TOTAL_DESCENT ((FIT_LAP_FIELD_NUM)22) +#define FIT_LAP_FIELD_NUM_NUM_LENGTHS ((FIT_LAP_FIELD_NUM)32) +#define FIT_LAP_FIELD_NUM_NORMALIZED_POWER ((FIT_LAP_FIELD_NUM)33) +#define FIT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE ((FIT_LAP_FIELD_NUM)34) +#define FIT_LAP_FIELD_NUM_FIRST_LENGTH_INDEX ((FIT_LAP_FIELD_NUM)35) +#define FIT_LAP_FIELD_NUM_AVG_STROKE_DISTANCE ((FIT_LAP_FIELD_NUM)37) +#define FIT_LAP_FIELD_NUM_NUM_ACTIVE_LENGTHS ((FIT_LAP_FIELD_NUM)40) +#define FIT_LAP_FIELD_NUM_AVG_ALTITUDE ((FIT_LAP_FIELD_NUM)42) +#define FIT_LAP_FIELD_NUM_MAX_ALTITUDE ((FIT_LAP_FIELD_NUM)43) +#define FIT_LAP_FIELD_NUM_AVG_GRADE ((FIT_LAP_FIELD_NUM)45) +#define FIT_LAP_FIELD_NUM_AVG_POS_GRADE ((FIT_LAP_FIELD_NUM)46) +#define FIT_LAP_FIELD_NUM_AVG_NEG_GRADE ((FIT_LAP_FIELD_NUM)47) +#define FIT_LAP_FIELD_NUM_MAX_POS_GRADE ((FIT_LAP_FIELD_NUM)48) +#define FIT_LAP_FIELD_NUM_MAX_NEG_GRADE ((FIT_LAP_FIELD_NUM)49) +#define FIT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED ((FIT_LAP_FIELD_NUM)53) +#define FIT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED ((FIT_LAP_FIELD_NUM)54) +#define FIT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED ((FIT_LAP_FIELD_NUM)55) +#define FIT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED ((FIT_LAP_FIELD_NUM)56) +#define FIT_LAP_FIELD_NUM_REPETITION_NUM ((FIT_LAP_FIELD_NUM)61) +#define FIT_LAP_FIELD_NUM_MIN_ALTITUDE ((FIT_LAP_FIELD_NUM)62) +#define FIT_LAP_FIELD_NUM_WKT_STEP_INDEX ((FIT_LAP_FIELD_NUM)71) +#define FIT_LAP_FIELD_NUM_OPPONENT_SCORE ((FIT_LAP_FIELD_NUM)74) +#define FIT_LAP_FIELD_NUM_STROKE_COUNT ((FIT_LAP_FIELD_NUM)75) +#define FIT_LAP_FIELD_NUM_ZONE_COUNT ((FIT_LAP_FIELD_NUM)76) +#define FIT_LAP_FIELD_NUM_AVG_VERTICAL_OSCILLATION ((FIT_LAP_FIELD_NUM)77) +#define FIT_LAP_FIELD_NUM_AVG_STANCE_TIME_PERCENT ((FIT_LAP_FIELD_NUM)78) +#define FIT_LAP_FIELD_NUM_AVG_STANCE_TIME ((FIT_LAP_FIELD_NUM)79) +#define FIT_LAP_FIELD_NUM_PLAYER_SCORE ((FIT_LAP_FIELD_NUM)83) +#define FIT_LAP_FIELD_NUM_AVG_TOTAL_HEMOGLOBIN_CONC ((FIT_LAP_FIELD_NUM)84) +#define FIT_LAP_FIELD_NUM_MIN_TOTAL_HEMOGLOBIN_CONC ((FIT_LAP_FIELD_NUM)85) +#define FIT_LAP_FIELD_NUM_MAX_TOTAL_HEMOGLOBIN_CONC ((FIT_LAP_FIELD_NUM)86) +#define FIT_LAP_FIELD_NUM_AVG_SATURATED_HEMOGLOBIN_PERCENT ((FIT_LAP_FIELD_NUM)87) +#define FIT_LAP_FIELD_NUM_MIN_SATURATED_HEMOGLOBIN_PERCENT ((FIT_LAP_FIELD_NUM)88) +#define FIT_LAP_FIELD_NUM_MAX_SATURATED_HEMOGLOBIN_PERCENT ((FIT_LAP_FIELD_NUM)89) +#define FIT_LAP_FIELD_NUM_AVG_VAM ((FIT_LAP_FIELD_NUM)121) +#define FIT_LAP_FIELD_NUM_EVENT ((FIT_LAP_FIELD_NUM)0) +#define FIT_LAP_FIELD_NUM_EVENT_TYPE ((FIT_LAP_FIELD_NUM)1) +#define FIT_LAP_FIELD_NUM_AVG_HEART_RATE ((FIT_LAP_FIELD_NUM)15) +#define FIT_LAP_FIELD_NUM_MAX_HEART_RATE ((FIT_LAP_FIELD_NUM)16) +#define FIT_LAP_FIELD_NUM_AVG_CADENCE ((FIT_LAP_FIELD_NUM)17) +#define FIT_LAP_FIELD_NUM_MAX_CADENCE ((FIT_LAP_FIELD_NUM)18) +#define FIT_LAP_FIELD_NUM_INTENSITY ((FIT_LAP_FIELD_NUM)23) +#define FIT_LAP_FIELD_NUM_LAP_TRIGGER ((FIT_LAP_FIELD_NUM)24) +#define FIT_LAP_FIELD_NUM_SPORT ((FIT_LAP_FIELD_NUM)25) +#define FIT_LAP_FIELD_NUM_EVENT_GROUP ((FIT_LAP_FIELD_NUM)26) +#define FIT_LAP_FIELD_NUM_SWIM_STROKE ((FIT_LAP_FIELD_NUM)38) +#define FIT_LAP_FIELD_NUM_SUB_SPORT ((FIT_LAP_FIELD_NUM)39) +#define FIT_LAP_FIELD_NUM_GPS_ACCURACY ((FIT_LAP_FIELD_NUM)44) +#define FIT_LAP_FIELD_NUM_AVG_TEMPERATURE ((FIT_LAP_FIELD_NUM)50) +#define FIT_LAP_FIELD_NUM_MAX_TEMPERATURE ((FIT_LAP_FIELD_NUM)51) +#define FIT_LAP_FIELD_NUM_MIN_HEART_RATE ((FIT_LAP_FIELD_NUM)63) +#define FIT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE ((FIT_LAP_FIELD_NUM)80) +#define FIT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE ((FIT_LAP_FIELD_NUM)81) +#define FIT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES ((FIT_LAP_FIELD_NUM)82) + +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_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_LENGTH_FIELD_NUM)253) +#define FIT_LENGTH_FIELD_NUM_START_TIME ((FIT_LENGTH_FIELD_NUM)2) +#define FIT_LENGTH_FIELD_NUM_TOTAL_ELAPSED_TIME ((FIT_LENGTH_FIELD_NUM)3) +#define FIT_LENGTH_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_LENGTH_FIELD_NUM)4) +#define FIT_LENGTH_FIELD_NUM_MESSAGE_INDEX ((FIT_LENGTH_FIELD_NUM)254) +#define FIT_LENGTH_FIELD_NUM_TOTAL_STROKES ((FIT_LENGTH_FIELD_NUM)5) +#define FIT_LENGTH_FIELD_NUM_AVG_SPEED ((FIT_LENGTH_FIELD_NUM)6) +#define FIT_LENGTH_FIELD_NUM_TOTAL_CALORIES ((FIT_LENGTH_FIELD_NUM)11) +#define FIT_LENGTH_FIELD_NUM_PLAYER_SCORE ((FIT_LENGTH_FIELD_NUM)18) +#define FIT_LENGTH_FIELD_NUM_OPPONENT_SCORE ((FIT_LENGTH_FIELD_NUM)19) +#define FIT_LENGTH_FIELD_NUM_STROKE_COUNT ((FIT_LENGTH_FIELD_NUM)20) +#define FIT_LENGTH_FIELD_NUM_ZONE_COUNT ((FIT_LENGTH_FIELD_NUM)21) +#define FIT_LENGTH_FIELD_NUM_EVENT ((FIT_LENGTH_FIELD_NUM)0) +#define FIT_LENGTH_FIELD_NUM_EVENT_TYPE ((FIT_LENGTH_FIELD_NUM)1) +#define FIT_LENGTH_FIELD_NUM_SWIM_STROKE ((FIT_LENGTH_FIELD_NUM)7) +#define FIT_LENGTH_FIELD_NUM_AVG_SWIMMING_CADENCE ((FIT_LENGTH_FIELD_NUM)9) +#define FIT_LENGTH_FIELD_NUM_EVENT_GROUP ((FIT_LENGTH_FIELD_NUM)10) +#define FIT_LENGTH_FIELD_NUM_LENGTH_TYPE ((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_RECORD_FIELD_NUM)253) +#define FIT_RECORD_FIELD_NUM_POSITION_LAT ((FIT_RECORD_FIELD_NUM)0) +#define FIT_RECORD_FIELD_NUM_POSITION_LONG ((FIT_RECORD_FIELD_NUM)1) +#define FIT_RECORD_FIELD_NUM_DISTANCE ((FIT_RECORD_FIELD_NUM)5) +#define FIT_RECORD_FIELD_NUM_TIME_FROM_COURSE ((FIT_RECORD_FIELD_NUM)11) +#define FIT_RECORD_FIELD_NUM_TOTAL_CYCLES ((FIT_RECORD_FIELD_NUM)19) +#define FIT_RECORD_FIELD_NUM_ACCUMULATED_POWER ((FIT_RECORD_FIELD_NUM)29) +#define FIT_RECORD_FIELD_NUM_ENHANCED_SPEED ((FIT_RECORD_FIELD_NUM)73) +#define FIT_RECORD_FIELD_NUM_ENHANCED_ALTITUDE ((FIT_RECORD_FIELD_NUM)78) +#define FIT_RECORD_FIELD_NUM_ALTITUDE ((FIT_RECORD_FIELD_NUM)2) +#define FIT_RECORD_FIELD_NUM_SPEED ((FIT_RECORD_FIELD_NUM)6) +#define FIT_RECORD_FIELD_NUM_POWER ((FIT_RECORD_FIELD_NUM)7) +#define FIT_RECORD_FIELD_NUM_GRADE ((FIT_RECORD_FIELD_NUM)9) +#define FIT_RECORD_FIELD_NUM_COMPRESSED_ACCUMULATED_POWER ((FIT_RECORD_FIELD_NUM)28) +#define FIT_RECORD_FIELD_NUM_VERTICAL_SPEED ((FIT_RECORD_FIELD_NUM)32) +#define FIT_RECORD_FIELD_NUM_CALORIES ((FIT_RECORD_FIELD_NUM)33) +#define FIT_RECORD_FIELD_NUM_VERTICAL_OSCILLATION ((FIT_RECORD_FIELD_NUM)39) +#define FIT_RECORD_FIELD_NUM_STANCE_TIME_PERCENT ((FIT_RECORD_FIELD_NUM)40) +#define FIT_RECORD_FIELD_NUM_STANCE_TIME ((FIT_RECORD_FIELD_NUM)41) +#define FIT_RECORD_FIELD_NUM_BALL_SPEED ((FIT_RECORD_FIELD_NUM)51) +#define FIT_RECORD_FIELD_NUM_CADENCE256 ((FIT_RECORD_FIELD_NUM)52) +#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC ((FIT_RECORD_FIELD_NUM)54) +#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MIN ((FIT_RECORD_FIELD_NUM)55) +#define FIT_RECORD_FIELD_NUM_TOTAL_HEMOGLOBIN_CONC_MAX ((FIT_RECORD_FIELD_NUM)56) +#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT ((FIT_RECORD_FIELD_NUM)57) +#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MIN ((FIT_RECORD_FIELD_NUM)58) +#define FIT_RECORD_FIELD_NUM_SATURATED_HEMOGLOBIN_PERCENT_MAX ((FIT_RECORD_FIELD_NUM)59) +#define FIT_RECORD_FIELD_NUM_HEART_RATE ((FIT_RECORD_FIELD_NUM)3) +#define FIT_RECORD_FIELD_NUM_CADENCE ((FIT_RECORD_FIELD_NUM)4) +#define FIT_RECORD_FIELD_NUM_COMPRESSED_SPEED_DISTANCE ((FIT_RECORD_FIELD_NUM)8) +#define FIT_RECORD_FIELD_NUM_RESISTANCE ((FIT_RECORD_FIELD_NUM)10) +#define FIT_RECORD_FIELD_NUM_CYCLE_LENGTH ((FIT_RECORD_FIELD_NUM)12) +#define FIT_RECORD_FIELD_NUM_TEMPERATURE ((FIT_RECORD_FIELD_NUM)13) +#define FIT_RECORD_FIELD_NUM_SPEED_1S ((FIT_RECORD_FIELD_NUM)17) +#define FIT_RECORD_FIELD_NUM_CYCLES ((FIT_RECORD_FIELD_NUM)18) +#define FIT_RECORD_FIELD_NUM_LEFT_RIGHT_BALANCE ((FIT_RECORD_FIELD_NUM)30) +#define FIT_RECORD_FIELD_NUM_GPS_ACCURACY ((FIT_RECORD_FIELD_NUM)31) +#define FIT_RECORD_FIELD_NUM_ACTIVITY_TYPE ((FIT_RECORD_FIELD_NUM)42) +#define FIT_RECORD_FIELD_NUM_LEFT_TORQUE_EFFECTIVENESS ((FIT_RECORD_FIELD_NUM)43) +#define FIT_RECORD_FIELD_NUM_RIGHT_TORQUE_EFFECTIVENESS ((FIT_RECORD_FIELD_NUM)44) +#define FIT_RECORD_FIELD_NUM_LEFT_PEDAL_SMOOTHNESS ((FIT_RECORD_FIELD_NUM)45) +#define FIT_RECORD_FIELD_NUM_RIGHT_PEDAL_SMOOTHNESS ((FIT_RECORD_FIELD_NUM)46) +#define FIT_RECORD_FIELD_NUM_COMBINED_PEDAL_SMOOTHNESS ((FIT_RECORD_FIELD_NUM)47) +#define FIT_RECORD_FIELD_NUM_TIME128 ((FIT_RECORD_FIELD_NUM)48) +#define FIT_RECORD_FIELD_NUM_STROKE_TYPE ((FIT_RECORD_FIELD_NUM)49) +#define FIT_RECORD_FIELD_NUM_ZONE ((FIT_RECORD_FIELD_NUM)50) +#define FIT_RECORD_FIELD_NUM_FRACTIONAL_CADENCE ((FIT_RECORD_FIELD_NUM)53) +#define FIT_RECORD_FIELD_NUM_DEVICE_INDEX ((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_EVENT_FIELD_NUM)253) +#define FIT_EVENT_FIELD_NUM_DATA ((FIT_EVENT_FIELD_NUM)3) +#define FIT_EVENT_FIELD_NUM_DATA16 ((FIT_EVENT_FIELD_NUM)2) +#define FIT_EVENT_FIELD_NUM_SCORE ((FIT_EVENT_FIELD_NUM)7) +#define FIT_EVENT_FIELD_NUM_OPPONENT_SCORE ((FIT_EVENT_FIELD_NUM)8) +#define FIT_EVENT_FIELD_NUM_EVENT ((FIT_EVENT_FIELD_NUM)0) +#define FIT_EVENT_FIELD_NUM_EVENT_TYPE ((FIT_EVENT_FIELD_NUM)1) +#define FIT_EVENT_FIELD_NUM_EVENT_GROUP ((FIT_EVENT_FIELD_NUM)4) +#define FIT_EVENT_FIELD_NUM_FRONT_GEAR_NUM ((FIT_EVENT_FIELD_NUM)9) +#define FIT_EVENT_FIELD_NUM_FRONT_GEAR ((FIT_EVENT_FIELD_NUM)10) +#define FIT_EVENT_FIELD_NUM_REAR_GEAR_NUM ((FIT_EVENT_FIELD_NUM)11) +#define FIT_EVENT_FIELD_NUM_REAR_GEAR ((FIT_EVENT_FIELD_NUM)12) +#define FIT_EVENT_FIELD_NUM_RADAR_THREAT_LEVEL_MAX ((FIT_EVENT_FIELD_NUM)21) +#define FIT_EVENT_FIELD_NUM_RADAR_THREAT_COUNT ((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_DEVICE_INFO_FIELD_NUM)253) +#define FIT_DEVICE_INFO_FIELD_NUM_SERIAL_NUMBER ((FIT_DEVICE_INFO_FIELD_NUM)3) +#define FIT_DEVICE_INFO_FIELD_NUM_CUM_OPERATING_TIME ((FIT_DEVICE_INFO_FIELD_NUM)7) +#define FIT_DEVICE_INFO_FIELD_NUM_PRODUCT_NAME ((FIT_DEVICE_INFO_FIELD_NUM)27) +#define FIT_DEVICE_INFO_FIELD_NUM_MANUFACTURER ((FIT_DEVICE_INFO_FIELD_NUM)2) +#define FIT_DEVICE_INFO_FIELD_NUM_PRODUCT ((FIT_DEVICE_INFO_FIELD_NUM)4) +#define FIT_DEVICE_INFO_FIELD_NUM_SOFTWARE_VERSION ((FIT_DEVICE_INFO_FIELD_NUM)5) +#define FIT_DEVICE_INFO_FIELD_NUM_BATTERY_VOLTAGE ((FIT_DEVICE_INFO_FIELD_NUM)10) +#define FIT_DEVICE_INFO_FIELD_NUM_ANT_DEVICE_NUMBER ((FIT_DEVICE_INFO_FIELD_NUM)21) +#define FIT_DEVICE_INFO_FIELD_NUM_DEVICE_INDEX ((FIT_DEVICE_INFO_FIELD_NUM)0) +#define FIT_DEVICE_INFO_FIELD_NUM_DEVICE_TYPE ((FIT_DEVICE_INFO_FIELD_NUM)1) +#define FIT_DEVICE_INFO_FIELD_NUM_HARDWARE_VERSION ((FIT_DEVICE_INFO_FIELD_NUM)6) +#define FIT_DEVICE_INFO_FIELD_NUM_BATTERY_STATUS ((FIT_DEVICE_INFO_FIELD_NUM)11) +#define FIT_DEVICE_INFO_FIELD_NUM_SENSOR_POSITION ((FIT_DEVICE_INFO_FIELD_NUM)18) +#define FIT_DEVICE_INFO_FIELD_NUM_DESCRIPTOR ((FIT_DEVICE_INFO_FIELD_NUM)19) +#define FIT_DEVICE_INFO_FIELD_NUM_ANT_TRANSMISSION_TYPE ((FIT_DEVICE_INFO_FIELD_NUM)20) +#define FIT_DEVICE_INFO_FIELD_NUM_ANT_NETWORK ((FIT_DEVICE_INFO_FIELD_NUM)22) +#define FIT_DEVICE_INFO_FIELD_NUM_SOURCE_TYPE ((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; + +// 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_TRAINING_FILE_FIELD_NUM)253) +#define FIT_TRAINING_FILE_FIELD_NUM_SERIAL_NUMBER ((FIT_TRAINING_FILE_FIELD_NUM)3) +#define FIT_TRAINING_FILE_FIELD_NUM_TIME_CREATED ((FIT_TRAINING_FILE_FIELD_NUM)4) +#define FIT_TRAINING_FILE_FIELD_NUM_MANUFACTURER ((FIT_TRAINING_FILE_FIELD_NUM)1) +#define FIT_TRAINING_FILE_FIELD_NUM_PRODUCT ((FIT_TRAINING_FILE_FIELD_NUM)2) +#define FIT_TRAINING_FILE_FIELD_NUM_TYPE ((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; + +// 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_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; + +// 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_WEATHER_CONDITIONS_FIELD_NUM)253) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_LOCATION ((FIT_WEATHER_CONDITIONS_FIELD_NUM)8) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_AT_TIME ((FIT_WEATHER_CONDITIONS_FIELD_NUM)9) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LAT ((FIT_WEATHER_CONDITIONS_FIELD_NUM)10) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_OBSERVED_LOCATION_LONG ((FIT_WEATHER_CONDITIONS_FIELD_NUM)11) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_DIRECTION ((FIT_WEATHER_CONDITIONS_FIELD_NUM)3) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WIND_SPEED ((FIT_WEATHER_CONDITIONS_FIELD_NUM)4) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_WEATHER_REPORT ((FIT_WEATHER_CONDITIONS_FIELD_NUM)0) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE ((FIT_WEATHER_CONDITIONS_FIELD_NUM)1) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_CONDITION ((FIT_WEATHER_CONDITIONS_FIELD_NUM)2) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_PRECIPITATION_PROBABILITY ((FIT_WEATHER_CONDITIONS_FIELD_NUM)5) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_TEMPERATURE_FEELS_LIKE ((FIT_WEATHER_CONDITIONS_FIELD_NUM)6) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_RELATIVE_HUMIDITY ((FIT_WEATHER_CONDITIONS_FIELD_NUM)7) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_DAY_OF_WEEK ((FIT_WEATHER_CONDITIONS_FIELD_NUM)12) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_HIGH_TEMPERATURE ((FIT_WEATHER_CONDITIONS_FIELD_NUM)13) +#define FIT_WEATHER_CONDITIONS_FIELD_NUM_LOW_TEMPERATURE ((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_WEATHER_ALERT_FIELD_NUM)253) +#define FIT_WEATHER_ALERT_FIELD_NUM_REPORT_ID ((FIT_WEATHER_ALERT_FIELD_NUM)0) +#define FIT_WEATHER_ALERT_FIELD_NUM_ISSUE_TIME ((FIT_WEATHER_ALERT_FIELD_NUM)1) +#define FIT_WEATHER_ALERT_FIELD_NUM_EXPIRE_TIME ((FIT_WEATHER_ALERT_FIELD_NUM)2) +#define FIT_WEATHER_ALERT_FIELD_NUM_SEVERITY ((FIT_WEATHER_ALERT_FIELD_NUM)3) +#define FIT_WEATHER_ALERT_FIELD_NUM_TYPE ((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_NMEA_SENTENCE_FIELD_NUM)253) +#define FIT_NMEA_SENTENCE_FIELD_NUM_TIMESTAMP_MS ((FIT_NMEA_SENTENCE_FIELD_NUM)0) +#define FIT_NMEA_SENTENCE_FIELD_NUM_SENTENCE ((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_AVIATION_ATTITUDE_FIELD_NUM)253) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_SYSTEM_TIME ((FIT_AVIATION_ATTITUDE_FIELD_NUM)1) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TIMESTAMP_MS ((FIT_AVIATION_ATTITUDE_FIELD_NUM)0) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_PITCH ((FIT_AVIATION_ATTITUDE_FIELD_NUM)2) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ROLL ((FIT_AVIATION_ATTITUDE_FIELD_NUM)3) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_LATERAL ((FIT_AVIATION_ATTITUDE_FIELD_NUM)4) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ACCEL_NORMAL ((FIT_AVIATION_ATTITUDE_FIELD_NUM)5) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TURN_RATE ((FIT_AVIATION_ATTITUDE_FIELD_NUM)6) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_TRACK ((FIT_AVIATION_ATTITUDE_FIELD_NUM)9) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_VALIDITY ((FIT_AVIATION_ATTITUDE_FIELD_NUM)10) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_STAGE ((FIT_AVIATION_ATTITUDE_FIELD_NUM)7) +#define FIT_AVIATION_ATTITUDE_FIELD_NUM_ATTITUDE_STAGE_COMPLETE ((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_VIDEO_TITLE_FIELD_NUM)1) +#define FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_INDEX ((FIT_VIDEO_TITLE_FIELD_NUM)254) +#define FIT_VIDEO_TITLE_FIELD_NUM_MESSAGE_COUNT ((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_VIDEO_DESCRIPTION_FIELD_NUM)254) +#define FIT_VIDEO_DESCRIPTION_FIELD_NUM_MESSAGE_COUNT ((FIT_VIDEO_DESCRIPTION_FIELD_NUM)0) +#define FIT_VIDEO_DESCRIPTION_FIELD_NUM_TEXT ((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_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; + +// 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_COURSE_FIELD_NUM)5) +#define FIT_COURSE_FIELD_NUM_CAPABILITIES ((FIT_COURSE_FIELD_NUM)6) +#define FIT_COURSE_FIELD_NUM_SPORT ((FIT_COURSE_FIELD_NUM)4) +#define FIT_COURSE_FIELD_NUM_SUB_SPORT ((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_COURSE_POINT_FIELD_NUM)1) +#define FIT_COURSE_POINT_FIELD_NUM_POSITION_LAT ((FIT_COURSE_POINT_FIELD_NUM)2) +#define FIT_COURSE_POINT_FIELD_NUM_POSITION_LONG ((FIT_COURSE_POINT_FIELD_NUM)3) +#define FIT_COURSE_POINT_FIELD_NUM_DISTANCE ((FIT_COURSE_POINT_FIELD_NUM)4) +#define FIT_COURSE_POINT_FIELD_NUM_NAME ((FIT_COURSE_POINT_FIELD_NUM)6) +#define FIT_COURSE_POINT_FIELD_NUM_MESSAGE_INDEX ((FIT_COURSE_POINT_FIELD_NUM)254) +#define FIT_COURSE_POINT_FIELD_NUM_TYPE ((FIT_COURSE_POINT_FIELD_NUM)5) +#define FIT_COURSE_POINT_FIELD_NUM_FAVORITE ((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_SEGMENT_ID_FIELD_NUM)4) +#define FIT_SEGMENT_ID_FIELD_NUM_DEVICE_ID ((FIT_SEGMENT_ID_FIELD_NUM)5) +#define FIT_SEGMENT_ID_FIELD_NUM_NAME ((FIT_SEGMENT_ID_FIELD_NUM)0) +#define FIT_SEGMENT_ID_FIELD_NUM_UUID ((FIT_SEGMENT_ID_FIELD_NUM)1) +#define FIT_SEGMENT_ID_FIELD_NUM_SPORT ((FIT_SEGMENT_ID_FIELD_NUM)2) +#define FIT_SEGMENT_ID_FIELD_NUM_ENABLED ((FIT_SEGMENT_ID_FIELD_NUM)3) +#define FIT_SEGMENT_ID_FIELD_NUM_DEFAULT_RACE_LEADER ((FIT_SEGMENT_ID_FIELD_NUM)6) +#define FIT_SEGMENT_ID_FIELD_NUM_DELETE_STATUS ((FIT_SEGMENT_ID_FIELD_NUM)7) +#define FIT_SEGMENT_ID_FIELD_NUM_SELECTION_TYPE ((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_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)2) +#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_ACTIVITY_ID ((FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)3) +#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_SEGMENT_TIME ((FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)4) +#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_MESSAGE_INDEX ((FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)254) +#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_NAME ((FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM)0) +#define FIT_SEGMENT_LEADERBOARD_ENTRY_FIELD_NUM_TYPE ((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_SEGMENT_POINT_FIELD_NUM)1) +#define FIT_SEGMENT_POINT_FIELD_NUM_POSITION_LONG ((FIT_SEGMENT_POINT_FIELD_NUM)2) +#define FIT_SEGMENT_POINT_FIELD_NUM_DISTANCE ((FIT_SEGMENT_POINT_FIELD_NUM)3) +#define FIT_SEGMENT_POINT_FIELD_NUM_LEADER_TIME ((FIT_SEGMENT_POINT_FIELD_NUM)5) +#define FIT_SEGMENT_POINT_FIELD_NUM_MESSAGE_INDEX ((FIT_SEGMENT_POINT_FIELD_NUM)254) +#define FIT_SEGMENT_POINT_FIELD_NUM_ALTITUDE ((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_SEGMENT_LAP_FIELD_NUM)253) +#define FIT_SEGMENT_LAP_FIELD_NUM_START_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)2) +#define FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LAT ((FIT_SEGMENT_LAP_FIELD_NUM)3) +#define FIT_SEGMENT_LAP_FIELD_NUM_START_POSITION_LONG ((FIT_SEGMENT_LAP_FIELD_NUM)4) +#define FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LAT ((FIT_SEGMENT_LAP_FIELD_NUM)5) +#define FIT_SEGMENT_LAP_FIELD_NUM_END_POSITION_LONG ((FIT_SEGMENT_LAP_FIELD_NUM)6) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)7) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_TIMER_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)8) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DISTANCE ((FIT_SEGMENT_LAP_FIELD_NUM)9) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CYCLES ((FIT_SEGMENT_LAP_FIELD_NUM)10) +#define FIT_SEGMENT_LAP_FIELD_NUM_NEC_LAT ((FIT_SEGMENT_LAP_FIELD_NUM)25) +#define FIT_SEGMENT_LAP_FIELD_NUM_NEC_LONG ((FIT_SEGMENT_LAP_FIELD_NUM)26) +#define FIT_SEGMENT_LAP_FIELD_NUM_SWC_LAT ((FIT_SEGMENT_LAP_FIELD_NUM)27) +#define FIT_SEGMENT_LAP_FIELD_NUM_SWC_LONG ((FIT_SEGMENT_LAP_FIELD_NUM)28) +#define FIT_SEGMENT_LAP_FIELD_NUM_NAME ((FIT_SEGMENT_LAP_FIELD_NUM)29) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_WORK ((FIT_SEGMENT_LAP_FIELD_NUM)33) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_MOVING_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)44) +#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_HR_ZONE ((FIT_SEGMENT_LAP_FIELD_NUM)49) +#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE ((FIT_SEGMENT_LAP_FIELD_NUM)50) +#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE ((FIT_SEGMENT_LAP_FIELD_NUM)51) +#define FIT_SEGMENT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE ((FIT_SEGMENT_LAP_FIELD_NUM)52) +#define FIT_SEGMENT_LAP_FIELD_NUM_ACTIVE_TIME ((FIT_SEGMENT_LAP_FIELD_NUM)56) +#define FIT_SEGMENT_LAP_FIELD_NUM_MESSAGE_INDEX ((FIT_SEGMENT_LAP_FIELD_NUM)254) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_CALORIES ((FIT_SEGMENT_LAP_FIELD_NUM)11) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES ((FIT_SEGMENT_LAP_FIELD_NUM)12) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)13) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)14) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POWER ((FIT_SEGMENT_LAP_FIELD_NUM)19) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POWER ((FIT_SEGMENT_LAP_FIELD_NUM)20) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_ASCENT ((FIT_SEGMENT_LAP_FIELD_NUM)21) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_DESCENT ((FIT_SEGMENT_LAP_FIELD_NUM)22) +#define FIT_SEGMENT_LAP_FIELD_NUM_NORMALIZED_POWER ((FIT_SEGMENT_LAP_FIELD_NUM)30) +#define FIT_SEGMENT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE ((FIT_SEGMENT_LAP_FIELD_NUM)31) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_ALTITUDE ((FIT_SEGMENT_LAP_FIELD_NUM)34) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_ALTITUDE ((FIT_SEGMENT_LAP_FIELD_NUM)35) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)37) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)38) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)39) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)40) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_GRADE ((FIT_SEGMENT_LAP_FIELD_NUM)41) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)45) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)46) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)47) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED ((FIT_SEGMENT_LAP_FIELD_NUM)48) +#define FIT_SEGMENT_LAP_FIELD_NUM_REPETITION_NUM ((FIT_SEGMENT_LAP_FIELD_NUM)53) +#define FIT_SEGMENT_LAP_FIELD_NUM_MIN_ALTITUDE ((FIT_SEGMENT_LAP_FIELD_NUM)54) +#define FIT_SEGMENT_LAP_FIELD_NUM_WKT_STEP_INDEX ((FIT_SEGMENT_LAP_FIELD_NUM)57) +#define FIT_SEGMENT_LAP_FIELD_NUM_FRONT_GEAR_SHIFT_COUNT ((FIT_SEGMENT_LAP_FIELD_NUM)69) +#define FIT_SEGMENT_LAP_FIELD_NUM_REAR_GEAR_SHIFT_COUNT ((FIT_SEGMENT_LAP_FIELD_NUM)70) +#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT ((FIT_SEGMENT_LAP_FIELD_NUM)0) +#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT_TYPE ((FIT_SEGMENT_LAP_FIELD_NUM)1) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_HEART_RATE ((FIT_SEGMENT_LAP_FIELD_NUM)15) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_HEART_RATE ((FIT_SEGMENT_LAP_FIELD_NUM)16) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_CADENCE ((FIT_SEGMENT_LAP_FIELD_NUM)17) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_CADENCE ((FIT_SEGMENT_LAP_FIELD_NUM)18) +#define FIT_SEGMENT_LAP_FIELD_NUM_SPORT ((FIT_SEGMENT_LAP_FIELD_NUM)23) +#define FIT_SEGMENT_LAP_FIELD_NUM_EVENT_GROUP ((FIT_SEGMENT_LAP_FIELD_NUM)24) +#define FIT_SEGMENT_LAP_FIELD_NUM_SUB_SPORT ((FIT_SEGMENT_LAP_FIELD_NUM)32) +#define FIT_SEGMENT_LAP_FIELD_NUM_GPS_ACCURACY ((FIT_SEGMENT_LAP_FIELD_NUM)36) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_TEMPERATURE ((FIT_SEGMENT_LAP_FIELD_NUM)42) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_TEMPERATURE ((FIT_SEGMENT_LAP_FIELD_NUM)43) +#define FIT_SEGMENT_LAP_FIELD_NUM_MIN_HEART_RATE ((FIT_SEGMENT_LAP_FIELD_NUM)55) +#define FIT_SEGMENT_LAP_FIELD_NUM_SPORT_EVENT ((FIT_SEGMENT_LAP_FIELD_NUM)58) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_TORQUE_EFFECTIVENESS ((FIT_SEGMENT_LAP_FIELD_NUM)59) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_TORQUE_EFFECTIVENESS ((FIT_SEGMENT_LAP_FIELD_NUM)60) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_LEFT_PEDAL_SMOOTHNESS ((FIT_SEGMENT_LAP_FIELD_NUM)61) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_RIGHT_PEDAL_SMOOTHNESS ((FIT_SEGMENT_LAP_FIELD_NUM)62) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_COMBINED_PEDAL_SMOOTHNESS ((FIT_SEGMENT_LAP_FIELD_NUM)63) +#define FIT_SEGMENT_LAP_FIELD_NUM_STATUS ((FIT_SEGMENT_LAP_FIELD_NUM)64) +#define FIT_SEGMENT_LAP_FIELD_NUM_UUID ((FIT_SEGMENT_LAP_FIELD_NUM)65) +#define FIT_SEGMENT_LAP_FIELD_NUM_AVG_FRACTIONAL_CADENCE ((FIT_SEGMENT_LAP_FIELD_NUM)66) +#define FIT_SEGMENT_LAP_FIELD_NUM_MAX_FRACTIONAL_CADENCE ((FIT_SEGMENT_LAP_FIELD_NUM)67) +#define FIT_SEGMENT_LAP_FIELD_NUM_TOTAL_FRACTIONAL_CYCLES ((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_SEGMENT_FILE_FIELD_NUM)4) +#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_GROUP_PRIMARY_KEY ((FIT_SEGMENT_FILE_FIELD_NUM)8) +#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_ACTIVITY_ID ((FIT_SEGMENT_FILE_FIELD_NUM)9) +#define FIT_SEGMENT_FILE_FIELD_NUM_MESSAGE_INDEX ((FIT_SEGMENT_FILE_FIELD_NUM)254) +#define FIT_SEGMENT_FILE_FIELD_NUM_FILE_UUID ((FIT_SEGMENT_FILE_FIELD_NUM)1) +#define FIT_SEGMENT_FILE_FIELD_NUM_ENABLED ((FIT_SEGMENT_FILE_FIELD_NUM)3) +#define FIT_SEGMENT_FILE_FIELD_NUM_LEADER_TYPE ((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 27 +#define FIT_WORKOUT_MESG_DEF_SIZE 26 +#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_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_WORKOUT_FIELD_NUM)5) +#define FIT_WORKOUT_FIELD_NUM_WKT_NAME ((FIT_WORKOUT_FIELD_NUM)8) +#define FIT_WORKOUT_FIELD_NUM_NUM_VALID_STEPS ((FIT_WORKOUT_FIELD_NUM)6) +#define FIT_WORKOUT_FIELD_NUM_POOL_LENGTH ((FIT_WORKOUT_FIELD_NUM)14) +#define FIT_WORKOUT_FIELD_NUM_SPORT ((FIT_WORKOUT_FIELD_NUM)4) +#define FIT_WORKOUT_FIELD_NUM_SUB_SPORT ((FIT_WORKOUT_FIELD_NUM)11) +#define FIT_WORKOUT_FIELD_NUM_POOL_LENGTH_UNIT ((FIT_WORKOUT_FIELD_NUM)15) + +typedef enum +{ + FIT_WORKOUT_MESG_CAPABILITIES, + FIT_WORKOUT_MESG_WKT_NAME, + 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_WORKOUT_SESSION_FIELD_NUM)254) +#define FIT_WORKOUT_SESSION_FIELD_NUM_NUM_VALID_STEPS ((FIT_WORKOUT_SESSION_FIELD_NUM)2) +#define FIT_WORKOUT_SESSION_FIELD_NUM_FIRST_STEP_INDEX ((FIT_WORKOUT_SESSION_FIELD_NUM)3) +#define FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH ((FIT_WORKOUT_SESSION_FIELD_NUM)4) +#define FIT_WORKOUT_SESSION_FIELD_NUM_SPORT ((FIT_WORKOUT_SESSION_FIELD_NUM)0) +#define FIT_WORKOUT_SESSION_FIELD_NUM_SUB_SPORT ((FIT_WORKOUT_SESSION_FIELD_NUM)1) +#define FIT_WORKOUT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT ((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 90 +#define FIT_WORKOUT_STEP_MESG_DEF_SIZE 41 +#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_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_WORKOUT_STEP_MESG; + +typedef FIT_UINT8 FIT_WORKOUT_STEP_FIELD_NUM; + +#define FIT_WORKOUT_STEP_FIELD_NUM_WKT_STEP_NAME ((FIT_WORKOUT_STEP_FIELD_NUM)0) +#define FIT_WORKOUT_STEP_FIELD_NUM_DURATION_VALUE ((FIT_WORKOUT_STEP_FIELD_NUM)2) +#define FIT_WORKOUT_STEP_FIELD_NUM_TARGET_VALUE ((FIT_WORKOUT_STEP_FIELD_NUM)4) +#define FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_LOW ((FIT_WORKOUT_STEP_FIELD_NUM)5) +#define FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_HIGH ((FIT_WORKOUT_STEP_FIELD_NUM)6) +#define FIT_WORKOUT_STEP_FIELD_NUM_MESSAGE_INDEX ((FIT_WORKOUT_STEP_FIELD_NUM)254) +#define FIT_WORKOUT_STEP_FIELD_NUM_EXERCISE_CATEGORY ((FIT_WORKOUT_STEP_FIELD_NUM)10) +#define FIT_WORKOUT_STEP_FIELD_NUM_DURATION_TYPE ((FIT_WORKOUT_STEP_FIELD_NUM)1) +#define FIT_WORKOUT_STEP_FIELD_NUM_TARGET_TYPE ((FIT_WORKOUT_STEP_FIELD_NUM)3) +#define FIT_WORKOUT_STEP_FIELD_NUM_INTENSITY ((FIT_WORKOUT_STEP_FIELD_NUM)7) +#define FIT_WORKOUT_STEP_FIELD_NUM_NOTES ((FIT_WORKOUT_STEP_FIELD_NUM)8) +#define FIT_WORKOUT_STEP_FIELD_NUM_EQUIPMENT ((FIT_WORKOUT_STEP_FIELD_NUM)9) + +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_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_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_EXERCISE_TITLE_FIELD_NUM)2) +#define FIT_EXERCISE_TITLE_FIELD_NUM_MESSAGE_INDEX ((FIT_EXERCISE_TITLE_FIELD_NUM)254) +#define FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_CATEGORY ((FIT_EXERCISE_TITLE_FIELD_NUM)0) +#define FIT_EXERCISE_TITLE_FIELD_NUM_EXERCISE_NAME ((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_SCHEDULE_FIELD_NUM)2) +#define FIT_SCHEDULE_FIELD_NUM_TIME_CREATED ((FIT_SCHEDULE_FIELD_NUM)3) +#define FIT_SCHEDULE_FIELD_NUM_SCHEDULED_TIME ((FIT_SCHEDULE_FIELD_NUM)6) +#define FIT_SCHEDULE_FIELD_NUM_MANUFACTURER ((FIT_SCHEDULE_FIELD_NUM)0) +#define FIT_SCHEDULE_FIELD_NUM_PRODUCT ((FIT_SCHEDULE_FIELD_NUM)1) +#define FIT_SCHEDULE_FIELD_NUM_COMPLETED ((FIT_SCHEDULE_FIELD_NUM)4) +#define FIT_SCHEDULE_FIELD_NUM_TYPE ((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_TOTALS_FIELD_NUM)253) +#define FIT_TOTALS_FIELD_NUM_TIMER_TIME ((FIT_TOTALS_FIELD_NUM)0) +#define FIT_TOTALS_FIELD_NUM_DISTANCE ((FIT_TOTALS_FIELD_NUM)1) +#define FIT_TOTALS_FIELD_NUM_CALORIES ((FIT_TOTALS_FIELD_NUM)2) +#define FIT_TOTALS_FIELD_NUM_ELAPSED_TIME ((FIT_TOTALS_FIELD_NUM)4) +#define FIT_TOTALS_FIELD_NUM_ACTIVE_TIME ((FIT_TOTALS_FIELD_NUM)6) +#define FIT_TOTALS_FIELD_NUM_MESSAGE_INDEX ((FIT_TOTALS_FIELD_NUM)254) +#define FIT_TOTALS_FIELD_NUM_SESSIONS ((FIT_TOTALS_FIELD_NUM)5) +#define FIT_TOTALS_FIELD_NUM_SPORT ((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 25 +#define FIT_WEIGHT_SCALE_MESG_DEF_SIZE 44 + +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_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_WEIGHT_SCALE_FIELD_NUM)253) +#define FIT_WEIGHT_SCALE_FIELD_NUM_WEIGHT ((FIT_WEIGHT_SCALE_FIELD_NUM)0) +#define FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_FAT ((FIT_WEIGHT_SCALE_FIELD_NUM)1) +#define FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_HYDRATION ((FIT_WEIGHT_SCALE_FIELD_NUM)2) +#define FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_MASS ((FIT_WEIGHT_SCALE_FIELD_NUM)3) +#define FIT_WEIGHT_SCALE_FIELD_NUM_BONE_MASS ((FIT_WEIGHT_SCALE_FIELD_NUM)4) +#define FIT_WEIGHT_SCALE_FIELD_NUM_MUSCLE_MASS ((FIT_WEIGHT_SCALE_FIELD_NUM)5) +#define FIT_WEIGHT_SCALE_FIELD_NUM_BASAL_MET ((FIT_WEIGHT_SCALE_FIELD_NUM)7) +#define FIT_WEIGHT_SCALE_FIELD_NUM_ACTIVE_MET ((FIT_WEIGHT_SCALE_FIELD_NUM)9) +#define FIT_WEIGHT_SCALE_FIELD_NUM_USER_PROFILE_INDEX ((FIT_WEIGHT_SCALE_FIELD_NUM)12) +#define FIT_WEIGHT_SCALE_FIELD_NUM_PHYSIQUE_RATING ((FIT_WEIGHT_SCALE_FIELD_NUM)8) +#define FIT_WEIGHT_SCALE_FIELD_NUM_METABOLIC_AGE ((FIT_WEIGHT_SCALE_FIELD_NUM)10) +#define FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_RATING ((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_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_BLOOD_PRESSURE_FIELD_NUM)253) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_SYSTOLIC_PRESSURE ((FIT_BLOOD_PRESSURE_FIELD_NUM)0) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_DIASTOLIC_PRESSURE ((FIT_BLOOD_PRESSURE_FIELD_NUM)1) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_MEAN_ARTERIAL_PRESSURE ((FIT_BLOOD_PRESSURE_FIELD_NUM)2) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_3_SAMPLE_MEAN ((FIT_BLOOD_PRESSURE_FIELD_NUM)3) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_MORNING_VALUES ((FIT_BLOOD_PRESSURE_FIELD_NUM)4) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_EVENING_VALUES ((FIT_BLOOD_PRESSURE_FIELD_NUM)5) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_USER_PROFILE_INDEX ((FIT_BLOOD_PRESSURE_FIELD_NUM)9) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE ((FIT_BLOOD_PRESSURE_FIELD_NUM)6) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE_TYPE ((FIT_BLOOD_PRESSURE_FIELD_NUM)7) +#define FIT_BLOOD_PRESSURE_FIELD_NUM_STATUS ((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_MONITORING_INFO_FIELD_NUM)253) +#define FIT_MONITORING_INFO_FIELD_NUM_LOCAL_TIMESTAMP ((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_MONITORING_FIELD_NUM)253) +#define FIT_MONITORING_FIELD_NUM_DISTANCE ((FIT_MONITORING_FIELD_NUM)2) +#define FIT_MONITORING_FIELD_NUM_CYCLES ((FIT_MONITORING_FIELD_NUM)3) +#define FIT_MONITORING_FIELD_NUM_ACTIVE_TIME ((FIT_MONITORING_FIELD_NUM)4) +#define FIT_MONITORING_FIELD_NUM_LOCAL_TIMESTAMP ((FIT_MONITORING_FIELD_NUM)11) +#define FIT_MONITORING_FIELD_NUM_CALORIES ((FIT_MONITORING_FIELD_NUM)1) +#define FIT_MONITORING_FIELD_NUM_DISTANCE_16 ((FIT_MONITORING_FIELD_NUM)8) +#define FIT_MONITORING_FIELD_NUM_CYCLES_16 ((FIT_MONITORING_FIELD_NUM)9) +#define FIT_MONITORING_FIELD_NUM_ACTIVE_TIME_16 ((FIT_MONITORING_FIELD_NUM)10) +#define FIT_MONITORING_FIELD_NUM_DEVICE_INDEX ((FIT_MONITORING_FIELD_NUM)0) +#define FIT_MONITORING_FIELD_NUM_ACTIVITY_TYPE ((FIT_MONITORING_FIELD_NUM)5) +#define FIT_MONITORING_FIELD_NUM_ACTIVITY_SUBTYPE ((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; + +// 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_HR_FIELD_NUM)253) +#define FIT_HR_FIELD_NUM_EVENT_TIMESTAMP ((FIT_HR_FIELD_NUM)9) +#define FIT_HR_FIELD_NUM_FRACTIONAL_TIMESTAMP ((FIT_HR_FIELD_NUM)0) +#define FIT_HR_FIELD_NUM_TIME256 ((FIT_HR_FIELD_NUM)1) +#define FIT_HR_FIELD_NUM_FILTERED_BPM ((FIT_HR_FIELD_NUM)6) +#define FIT_HR_FIELD_NUM_EVENT_TIMESTAMP_12 ((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_ANT_RX_FIELD_NUM)253) +#define FIT_ANT_RX_FIELD_NUM_DATA ((FIT_ANT_RX_FIELD_NUM)4) +#define FIT_ANT_RX_FIELD_NUM_FRACTIONAL_TIMESTAMP ((FIT_ANT_RX_FIELD_NUM)0) +#define FIT_ANT_RX_FIELD_NUM_MESG_ID ((FIT_ANT_RX_FIELD_NUM)1) +#define FIT_ANT_RX_FIELD_NUM_MESG_DATA ((FIT_ANT_RX_FIELD_NUM)2) +#define FIT_ANT_RX_FIELD_NUM_CHANNEL_NUMBER ((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_ANT_TX_FIELD_NUM)253) +#define FIT_ANT_TX_FIELD_NUM_DATA ((FIT_ANT_TX_FIELD_NUM)4) +#define FIT_ANT_TX_FIELD_NUM_FRACTIONAL_TIMESTAMP ((FIT_ANT_TX_FIELD_NUM)0) +#define FIT_ANT_TX_FIELD_NUM_MESG_ID ((FIT_ANT_TX_FIELD_NUM)1) +#define FIT_ANT_TX_FIELD_NUM_MESG_DATA ((FIT_ANT_TX_FIELD_NUM)2) +#define FIT_ANT_TX_FIELD_NUM_CHANNEL_NUMBER ((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_EXD_SCREEN_CONFIGURATION_FIELD_NUM)0) +#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_FIELD_COUNT ((FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM)1) +#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_LAYOUT ((FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM)2) +#define FIT_EXD_SCREEN_CONFIGURATION_FIELD_NUM_SCREEN_ENABLED ((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_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)0) +#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD ((FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)1) +#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_FIELD_ID ((FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)2) +#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_CONCEPT_COUNT ((FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)3) +#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_DISPLAY_TYPE ((FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM)4) +#define FIT_EXD_DATA_FIELD_CONFIGURATION_FIELD_NUM_TITLE ((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_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)0) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_FIELD ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)1) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_FIELD_ID ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)2) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_INDEX ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)3) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_PAGE ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)4) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_CONCEPT_KEY ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)5) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_SCALING ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)6) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DATA_UNITS ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)8) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_QUALIFIER ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)9) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_DESCRIPTOR ((FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM)10) +#define FIT_EXD_DATA_CONCEPT_CONFIGURATION_FIELD_NUM_IS_SIGNED ((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; + +// 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_FIELD_DESCRIPTION_FIELD_NUM)3) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_UNITS ((FIT_FIELD_DESCRIPTION_FIELD_NUM)8) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_UNIT_ID ((FIT_FIELD_DESCRIPTION_FIELD_NUM)13) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_MESG_NUM ((FIT_FIELD_DESCRIPTION_FIELD_NUM)14) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_DEVELOPER_DATA_INDEX ((FIT_FIELD_DESCRIPTION_FIELD_NUM)0) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIELD_DEFINITION_NUMBER ((FIT_FIELD_DESCRIPTION_FIELD_NUM)1) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_FIT_BASE_TYPE_ID ((FIT_FIELD_DESCRIPTION_FIELD_NUM)2) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_SCALE ((FIT_FIELD_DESCRIPTION_FIELD_NUM)6) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_OFFSET ((FIT_FIELD_DESCRIPTION_FIELD_NUM)7) +#define FIT_FIELD_DESCRIPTION_FIELD_NUM_NATIVE_FIELD_NUM ((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_DEVELOPER_DATA_ID_FIELD_NUM)0) +#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_ID ((FIT_DEVELOPER_DATA_ID_FIELD_NUM)1) +#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_APPLICATION_VERSION ((FIT_DEVELOPER_DATA_ID_FIELD_NUM)4) +#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_MANUFACTURER_ID ((FIT_DEVELOPER_DATA_ID_FIELD_NUM)2) +#define FIT_DEVELOPER_DATA_ID_FIELD_NUM_DEVELOPER_DATA_INDEX ((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; + +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_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_TRAINING_FILE, + FIT_MESG_HRV, + 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_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_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_FIELD_DESCRIPTION, + FIT_MESG_DEVELOPER_DATA_ID, + 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_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_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) +