diff --git a/package.json b/package.json index 57eb225..435089d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@garmin/fitsdk", - "version": "21.214.0", + "version": "21.217.0", "description": "FIT JavaScript SDK", "main": "src/index.js", "types": "src/index.d.ts", @@ -20,7 +20,7 @@ "devDependencies": { "@types/node": "^22.0.0", "typescript": "5.9.3", - "vitest": "4.1.5" + "vitest": ">=4.1.11" }, "overrides": { "vite": "8.0.16" diff --git a/src/accumulator.js b/src/accumulator.js index 01c8e4c..d28df03 100644 --- a/src/accumulator.js +++ b/src/accumulator.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/bit-stream.js b/src/bit-stream.js index a17d55b..94b4bb3 100644 --- a/src/bit-stream.js +++ b/src/bit-stream.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/crc-calculator.js b/src/crc-calculator.js index c2f97b3..8f9bde0 100644 --- a/src/crc-calculator.js +++ b/src/crc-calculator.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/decoder.js b/src/decoder.js index 4db5882..924c867 100644 --- a/src/decoder.js +++ b/src/decoder.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// @@ -716,7 +716,7 @@ class Decoder { rawFieldValues.forEach((value) => { Object.values(message).forEach((containingField) => { - let components = messageDefinition.fields[containingField.fieldDefinitionNumber].components ?? [] + let components = messageDefinition.fields[containingField.fieldDefinitionNumber]?.components ?? [] components.forEach((componentFieldNum, i) => { const targetField = messageDefinition.fields[componentFieldNum]; diff --git a/src/encoder.js b/src/encoder.js index b6f2e5e..bd2e4a2 100644 --- a/src/encoder.js +++ b/src/encoder.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/fit.js b/src/fit.js index c43ad54..9b5a2e5 100644 --- a/src/fit.js +++ b/src/fit.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/index.d.ts b/src/index.d.ts index 2ee8dc6..e572abc 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -5,18 +5,18 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// -export * from './types/crc-calculator'; -export * from './types/decoder'; -export * from './types/encoder'; -export * from './types/mesg'; -export * from './types/mesgs'; -export * from './types/profile'; -export * from './types/stream'; -export * from './types/types'; -export { default as Types } from './types/types'; -export * from './types/utils'; +export * from './types/crc-calculator.js'; +export * from './types/decoder.js'; +export * from './types/encoder.js'; +export * from './types/mesg.js'; +export * from './types/mesgs.js'; +export * from './types/profile.js'; +export * from './types/stream.js'; +export * from './types/types.js'; +export { default as Types } from './types/types.js'; +export * from './types/utils.js'; diff --git a/src/index.js b/src/index.js index 48c8475..ded2716 100644 --- a/src/index.js +++ b/src/index.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/mesg-definition.js b/src/mesg-definition.js index 377b852..2d30c4b 100644 --- a/src/mesg-definition.js +++ b/src/mesg-definition.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/output-stream.js b/src/output-stream.js index 3910f52..fc653a6 100644 --- a/src/output-stream.js +++ b/src/output-stream.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/profile.js b/src/profile.js index d2771a3..2afe697 100644 --- a/src/profile.js +++ b/src/profile.js @@ -5,15 +5,15 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// const Profile = { version: { major: 21, - minor: 214, + minor: 217, patch: 0, type: "Release" }, @@ -5121,6 +5121,50 @@ const Profile = { { name: "sport", value: 1 }, ], }, + { + name: "avgSwimmingCadence", + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "avgPaddlesportCadence", + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "avgPushCadence", // average pushes per minute in a session + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, ] }, 19: { @@ -5150,6 +5194,50 @@ const Profile = { { name: "sport", value: 1 }, ], }, + { + name: "maxSwimmingCadence", + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "maxPaddlesportCadence", + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "maxPushCadence", // max pushes per minute in a session + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, ] }, 20: { @@ -5932,6 +6020,36 @@ const Profile = { hasComponents: false, subFields: [] }, + 79: { + num: 79, + name: "avgStrokesPerLength", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "strokes/length", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 80: { + num: 80, + name: "avgSwolf", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 82: { num: 82, name: "playerScore", @@ -6292,6 +6410,51 @@ const Profile = { hasComponents: false, subFields: [] }, + 106: { + num: 106, + name: "numSegmentLaps", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 107: { + num: 107, + name: "frontGearShiftCount", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 108: { + num: 108, + name: "rearGearShiftCount", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 110: { num: 110, // Sport name from associated sport mesg name: "sportProfileName", @@ -7207,6 +7370,21 @@ const Profile = { hasComponents: false, subFields: [] }, + 211: { + num: 211, + name: "avgGradeAdjustedSpeed", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, }, }, 19: { @@ -7439,6 +7617,21 @@ const Profile = { { name: "sport", value: 37 }, ], }, + { + name: "totalPushes", // total number of pushes in a lap + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "pushes", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, ] }, 11: { @@ -7558,6 +7751,50 @@ const Profile = { { name: "sport", value: 1 }, ], }, + { + name: "avgSwimmingCadence", + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "avgPaddlesportCadence", + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "avgPushCadence", // average pushes per minute in a lap + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, ] }, 18: { @@ -7587,6 +7824,50 @@ const Profile = { { name: "sport", value: 1 }, ], }, + { + name: "maxSwimmingCadence", + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "maxPaddlesportCadence", + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "maxPushCadence", // max pushes per minute in a lap + type: "uint8", + baseType: "uint8", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, ] }, 19: { @@ -7709,15 +7990,75 @@ const Profile = { hasComponents: false, subFields: [] }, - 32: { - num: 32, // # of lengths of swim pool - name: "numLengths", - type: "uint16", - baseType: "uint16", + 27: { + num: 27, // North east corner latitude. + name: "necLat", + type: "sint32", + baseType: "sint32", array: false, scale: 1, offset: 0, - units: "lengths", + units: "semicircles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 28: { + num: 28, // North east corner longitude. + name: "necLong", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1, + offset: 0, + units: "semicircles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 29: { + num: 29, // South west corner latitude. + name: "swcLat", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1, + offset: 0, + units: "semicircles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 30: { + num: 30, // South west corner latitude. + name: "swcLong", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1, + offset: 0, + units: "semicircles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 32: { + num: 32, // # of lengths of swim pool + name: "numLengths", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "lengths", bits: [], components: [], isAccumulated: false, @@ -8204,6 +8545,21 @@ const Profile = { hasComponents: false, subFields: [] }, + 73: { + num: 73, + name: "avgSwolf", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 74: { num: 74, name: "opponentScore", @@ -8444,6 +8800,21 @@ const Profile = { hasComponents: false, subFields: [] }, + 90: { + num: 90, + name: "avgStrokesPerLength", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "strokes / length", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 91: { num: 91, name: "avgLeftTorqueEffectiveness", @@ -8519,6 +8890,36 @@ const Profile = { hasComponents: false, subFields: [] }, + 96: { + num: 96, + name: "frontGearShiftCount", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 97: { + num: 97, + name: "rearGearShiftCount", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 98: { num: 98, // Total time spent in the standing position name: "timeStanding", @@ -9059,6 +9460,21 @@ const Profile = { hasComponents: false, subFields: [] }, + 155: { + num: 155, + name: "metabolicCalories", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "kcal", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 156: { num: 156, // fractional part of total_ascent name: "totalFractionalAscent", @@ -9134,6 +9550,21 @@ const Profile = { hasComponents: false, subFields: [] }, + 161: { + num: 161, + name: "avgGradeAdjustedSpeed", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, }, }, 101: { @@ -9471,6 +9902,21 @@ const Profile = { hasComponents: true, subFields: [] }, + 26: { + num: 26, + name: "metabolicCalories", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "kcal", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, }, }, 20: { @@ -11957,6 +12403,43 @@ const Profile = { subFields: [] }, }, + }, + 104: { + num: 104, + name: "battery", + messagesKey: "batteryMesgs", + fields: { + 253: { + num: 253, + name: "timestamp", + type: "dateTime", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 2: { + num: 2, + name: "capacity", + type: "uint8", + baseType: "uint8", + array: false, + scale: 1, + offset: 0, + units: "%", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + }, }, 128: { num: 128, @@ -13062,6 +13545,21 @@ const Profile = { hasComponents: false, subFields: [] }, + 3: { + num: 3, + name: "enhancedAltitude", + type: "uint32", + baseType: "uint32", + array: true, + scale: 5, + offset: 500, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, }, }, 167: { @@ -14365,6 +14863,21 @@ const Profile = { hasComponents: false, subFields: [] }, + 253: { + num: 253, + name: "timestamp", + type: "dateTime", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 0: { num: 0, name: "splitType", @@ -14455,6 +14968,36 @@ const Profile = { hasComponents: false, subFields: [] }, + 11: { + num: 11, + name: "sport", + type: "sport", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 12: { + num: 12, + name: "subSport", + type: "subSport", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 13: { num: 13, name: "totalAscent", @@ -14485,13 +15028,103 @@ const Profile = { hasComponents: false, subFields: [] }, - 21: { - num: 21, - name: "startPositionLat", - type: "sint32", - baseType: "sint32", - array: false, - scale: 1, + 15: { + num: 15, + name: "avgHeartRate", + type: "uint8", + baseType: "uint8", + array: false, + scale: 1, + offset: 0, + units: "bpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 16: { + num: 16, + name: "maxHeartRate", + type: "uint8", + baseType: "uint8", + array: false, + scale: 1, + offset: 0, + units: "bpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 17: { + num: 17, // North east corner latitude + name: "necLat", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1, + offset: 0, + units: "semicircles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 18: { + num: 18, // North east corner longitude + name: "necLong", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1, + offset: 0, + units: "semicircles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 19: { + num: 19, // South west corner latitude + name: "swcLat", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1, + offset: 0, + units: "semicircles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 20: { + num: 20, // South west corner longitude + name: "swcLong", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1, + offset: 0, + units: "semicircles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 21: { + num: 21, + name: "startPositionLat", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1, offset: 0, units: "semicircles", bits: [], @@ -14575,11 +15208,2718 @@ const Profile = { hasComponents: false, subFields: [] }, - 27: { - num: 27, - name: "endTime", - type: "dateTime", - baseType: "uint32", + 27: { + num: 27, + name: "endTime", + type: "dateTime", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 28: { + num: 28, + name: "totalCalories", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "kcal", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 29: { + num: 29, + name: "avgCadence", + type: "uint16", + baseType: "uint16", + array: false, + scale: 128, + offset: 0, + units: "rpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "avgRunningCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strides/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 1 }, + ], + }, + { + name: "avgSwimmingCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "avgPaddlesportCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "avgPushCadence", // average pushes per minute in a split + type: "uint16", + baseType: "uint16", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, + ] + }, + 30: { + num: 30, + name: "maxCadence", + type: "uint16", + baseType: "uint16", + array: false, + scale: 128, + offset: 0, + units: "rpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "maxRunningCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strides/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 1 }, + ], + }, + { + name: "maxSwimmingCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "maxPaddlesportCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "maxPushCadence", // max pushes per minute in a split + type: "uint16", + baseType: "uint16", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, + ] + }, + 31: { + num: 31, + name: "totalCycles", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "cycles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "totalStrides", + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "strides", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 1 }, + { name: "sport", value: 11 }, + ], + }, + { + name: "totalStrokes", + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "strokes", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 2 }, + { name: "sport", value: 5 }, + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "totalReps", // total reps in a split round + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "reps", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 62 }, + ], + }, + { + name: "totalPushes", // total number of pushes in a split + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "pushes", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, + ] + }, + 32: { + num: 32, + name: "avgTemperature", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "C", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 33: { + num: 33, + name: "maxTemperature", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "C", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 34: { + num: 34, + name: "minTemperature", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "C", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 35: { + num: 35, + name: "avgVerticalOscillation", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "mm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 36: { + num: 36, + name: "avgVerticalRatio", + type: "uint16", + baseType: "uint16", + array: false, + scale: 100, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 37: { + num: 37, + name: "avgStanceTime", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "ms", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 38: { + num: 38, + name: "avgStanceTimeBalance", + type: "uint16", + baseType: "uint16", + array: false, + scale: 100, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 39: { + num: 39, + name: "avgStepLength", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "mm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 40: { + num: 40, + name: "avgPower", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 41: { + num: 41, + name: "maxPower", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 42: { + num: 42, + name: "normalizedPower", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 43: { + num: 43, + name: "leftRightBalance", + type: "leftRightBalance100", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 44: { + num: 44, // Total time spent in the standing position + name: "timeStanding", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 45: { + num: 45, // Average left platform center offset + name: "avgLeftPco", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "mm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 46: { + num: 46, // Average right platform center offset + name: "avgRightPco", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "mm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 47: { + num: 47, // Average left power phase angles. Data value indexes defined by power_phase_type. + name: "avgLeftPowerPhase", + type: "uint8", + baseType: "uint8", + array: true, + scale: 0.7111111, + offset: 0, + units: "degrees", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 48: { + num: 48, // Average left power phase peak angles. Data value indexes defined by power_phase_type. + name: "avgLeftPowerPhasePeak", + type: "uint8", + baseType: "uint8", + array: true, + scale: 0.7111111, + offset: 0, + units: "degrees", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 49: { + num: 49, // Average right power phase angles. Data value indexes defined by power_phase_type. + name: "avgRightPowerPhase", + type: "uint8", + baseType: "uint8", + array: true, + scale: 0.7111111, + offset: 0, + units: "degrees", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 50: { + num: 50, // Average right power phase peak angles. Data value indexes defined by power_phase_type. + name: "avgRightPowerPhasePeak", + type: "uint8", + baseType: "uint8", + array: true, + scale: 0.7111111, + offset: 0, + units: "degrees", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 51: { + num: 51, // Average power by position. Data value indexes defined by rider_position_type. + name: "avgPowerPosition", + type: "uint16", + baseType: "uint16", + array: true, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 52: { + num: 52, // Maximum power by position. Data value indexes defined by rider_position_type. + name: "maxPowerPosition", + type: "uint16", + baseType: "uint16", + array: true, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 53: { + num: 53, + name: "avgLeftTorqueEffectiveness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 54: { + num: 54, + name: "avgRightTorqueEffectiveness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 55: { + num: 55, + name: "avgLeftPedalSmoothness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 56: { + num: 56, + name: "avgRightPedalSmoothness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 57: { + num: 57, + name: "avgCombinedPedalSmoothness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 58: { + num: 58, // The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. + name: "avgFlow", + type: "float32", + baseType: "float32", + array: false, + scale: 1, + offset: 0, + units: "Flow", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 59: { + num: 59, // The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. + name: "totalGrit", + type: "float32", + baseType: "float32", + array: false, + scale: 1, + offset: 0, + units: "kGrit", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 62: { + num: 62, + name: "swimStroke", + type: "swimStroke", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 63: { + num: 63, // # of active lengths of swim pool + name: "numActiveLengths", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "lengths", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 64: { + num: 64, + name: "avgSwolf", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 65: { + num: 65, + name: "avgStrokeDistance", + type: "uint16", + baseType: "uint16", + array: false, + scale: 100, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 66: { + num: 66, + name: "avgStrokesPerLength", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "strokes / length", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 67: { + num: 67, // This is only set for split types that will trigger the end of a lap when the split ends + name: "firstLapIndex", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 68: { + num: 68, // This is only set for split types that will trigger the end of a lap when the split ends + name: "numLaps", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 69: { + num: 69, + name: "climbGradingScale", + type: "climbGradingScale", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 70: { + num: 70, + name: "climbGradeValue", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "climbGradeYds", + type: "ydsGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 0 }, + ], + }, + { + name: "climbGradeUiaa", + type: "uiaaGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 1 }, + ], + }, + { + name: "climbGradeFrench", + type: "frenchGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 2 }, + ], + }, + { + name: "climbGradeBritishAdjectival", + type: "britishAdjectivalGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 3 }, + ], + }, + { + name: "climbGradeBritishTechnical", + type: "britishTechnicalGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 4 }, + ], + }, + { + name: "climbGradeEwbank", + type: "ewbankGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 5 }, + ], + }, + { + name: "climbGradeBrazilian", + type: "brazilianGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 6 }, + ], + }, + { + name: "climbGradeSaxon", + type: "saxonGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 7 }, + ], + }, + { + name: "climbGradeVermin", + type: "verminGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 8 }, + ], + }, + { + name: "climbGradeFont", + type: "fontGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 9 }, + ], + }, + { + name: "climbGradeDankyu", + type: "dankyuGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 10 }, + ], + }, + ] + }, + 71: { + num: 71, // Use with indoor climbing activities only + name: "status", + type: "splitStatus", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 72: { + num: 72, // Use with indoor climbing activities only + name: "numFalls", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 73: { + num: 73, // Use with indoor climbing activities only + name: "climbSend", + type: "bool", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 74: { + num: 74, + name: "startElevation", + type: "uint32", + baseType: "uint32", + array: false, + scale: 5, + offset: 500, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 78: { + num: 78, // Active time of split rounds + name: "activeTime", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 79: { + num: 79, + name: "metabolicCalories", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "kcal", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 80: { + num: 80, // fractional part of total_ascent + name: "totalFractionalAscent", + type: "uint8", + baseType: "uint8", + array: false, + scale: 100, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 81: { + num: 81, // fractional part of total_descent + name: "totalFractionalDescent", + type: "uint8", + baseType: "uint8", + array: false, + scale: 100, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 88: { + num: 88, + name: "avgGrade", + type: "sint16", + baseType: "sint16", + array: false, + scale: 100, + offset: 0, + units: "%", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 89: { + num: 89, + name: "maxGrade", + type: "sint16", + baseType: "sint16", + array: false, + scale: 100, + offset: 0, + units: "%", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 90: { + num: 90, + name: "minCadence", + type: "uint16", + baseType: "uint16", + array: false, + scale: 128, + offset: 0, + units: "rpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "minRunningCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strides/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 1 }, + ], + }, + { + name: "minSwimmingCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "minPaddlesportCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "minPushCadence", // min pushes per minute in a split + type: "uint16", + baseType: "uint16", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, + ] + }, + 93: { + num: 93, + name: "avgGradeAdjustedSpeed", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 94: { + num: 94, + name: "avgStress", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 99: { + num: 99, + name: "avgVam", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 104: { + num: 104, + name: "jumpCount", + type: "uint8", + baseType: "uint8", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 110: { + num: 110, + name: "totalMovingTime", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 112: { + num: 112, + name: "diveSectionType", + type: "diveSectionType", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 113: { + num: 113, + name: "avgAscentRate", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 114: { + num: 114, + name: "maxAscentRate", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 115: { + num: 115, + name: "avgDescentRate", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 116: { + num: 116, + name: "maxDescentRate", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 117: { + num: 117, + name: "totalAscentTime", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 118: { + num: 118, + name: "totalDescentTime", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 119: { + num: 119, + name: "totalHangTime", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 120: { + num: 120, + name: "apneaDiscipline", + type: "apneaDiscipline", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 121: { + num: 121, // Average depth. 0 if above water + name: "avgDepth", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 122: { + num: 122, // Max depth. 0 if above water + name: "maxDepth", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 124: { + num: 124, + name: "minHeartRate", + type: "uint8", + baseType: "uint8", + array: false, + scale: 1, + offset: 0, + units: "bpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 127: { + num: 127, // Time since end of last dive + name: "surfaceInterval", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 142: { + num: 142, + name: "totalFractionalCycles", + type: "uint8", + baseType: "uint8", + array: false, + scale: 128, + offset: 0, + units: "cycles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 144: { + num: 144, + name: "avgStanceTimePercent", + type: "uint16", + baseType: "uint16", + array: false, + scale: 100, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 168: { + num: 168, + name: "totalAnaerobicTrainingEffect", + type: "uint8", + baseType: "uint8", + array: false, + scale: 10, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 169: { + num: 169, + name: "frontGearShiftCount", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 170: { + num: 170, + name: "rearGearShiftCount", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + }, + }, + 313: { + num: 313, + name: "splitSummary", + messagesKey: "splitSummaryMesgs", + fields: { + 254: { + num: 254, + name: "messageIndex", + type: "messageIndex", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 253: { + num: 253, + name: "timestamp", + type: "dateTime", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 0: { + num: 0, + name: "splitType", + type: "splitType", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 1: { + num: 1, + name: "sport", + type: "sport", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 2: { + num: 2, + name: "subSport", + type: "subSport", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 3: { + num: 3, + name: "numSplits", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 4: { + num: 4, + name: "totalTimerTime", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 5: { + num: 5, + name: "totalDistance", + type: "uint32", + baseType: "uint32", + array: false, + scale: 100, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 6: { + num: 6, + name: "avgSpeed", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 7: { + num: 7, + name: "maxSpeed", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 8: { + num: 8, + name: "totalAscent", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 9: { + num: 9, + name: "totalDescent", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 10: { + num: 10, + name: "avgHeartRate", + type: "uint8", + baseType: "uint8", + array: false, + scale: 1, + offset: 0, + units: "bpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 11: { + num: 11, + name: "maxHeartRate", + type: "uint8", + baseType: "uint8", + array: false, + scale: 1, + offset: 0, + units: "bpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 12: { + num: 12, + name: "avgVertSpeed", + type: "sint32", + baseType: "sint32", + array: false, + scale: 1000, + offset: 0, + units: "m/s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 13: { + num: 13, + name: "totalCalories", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "kcal", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 14: { + num: 14, + name: "avgCadence", + type: "uint16", + baseType: "uint16", + array: false, + scale: 128, + offset: 0, + units: "rpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "avgRunningCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strides/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 1 }, + ], + }, + { + name: "avgSwimmingCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "avgPaddlesportCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "avgPushCadence", // average pushes per minute in all splits of the type + type: "uint16", + baseType: "uint16", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, + ] + }, + 15: { + num: 15, + name: "maxCadence", + type: "uint16", + baseType: "uint16", + array: false, + scale: 128, + offset: 0, + units: "rpm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "maxRunningCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strides/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 1 }, + ], + }, + { + name: "maxSwimmingCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 5 }, + ], + }, + { + name: "maxPaddlesportCadence", + type: "uint16", + baseType: "uint16", + scale: 128, + offset: 0, + units: "strokes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "maxPushCadence", // max pushes per minute in all splits of the type + type: "uint16", + baseType: "uint16", + scale: 1, + offset: 0, + units: "pushes/min", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, + ] + }, + 16: { + num: 16, + name: "totalCycles", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "cycles", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "totalStrides", + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "strides", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 1 }, + { name: "sport", value: 11 }, + ], + }, + { + name: "totalStrokes", + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "strokes", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 2 }, + { name: "sport", value: 5 }, + { name: "sport", value: 15 }, + { name: "sport", value: 37 }, + ], + }, + { + name: "totalReps", // total reps in all splits + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "reps", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 62 }, + ], + }, + { + name: "totalPushes", // total number of pushes in all splits of the type + type: "uint32", + baseType: "uint32", + scale: 1, + offset: 0, + units: "pushes", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "sport", value: 66 }, + { name: "sport", value: 65 }, + ], + }, + ] + }, + 17: { + num: 17, + name: "avgTemperature", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "C", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 18: { + num: 18, + name: "maxTemperature", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "C", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 19: { + num: 19, + name: "minTemperature", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "C", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 20: { + num: 20, + name: "avgVerticalOscillation", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "mm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 21: { + num: 21, + name: "avgVerticalRatio", + type: "uint16", + baseType: "uint16", + array: false, + scale: 100, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 22: { + num: 22, + name: "avgStanceTime", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "ms", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 23: { + num: 23, + name: "avgStanceTimeBalance", + type: "uint16", + baseType: "uint16", + array: false, + scale: 100, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 24: { + num: 24, + name: "avgStepLength", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "mm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 25: { + num: 25, + name: "avgPower", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 26: { + num: 26, + name: "maxPower", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 27: { + num: 27, + name: "normalizedPower", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 28: { + num: 28, // Total time spent in the standing position + name: "leftRightBalance", + type: "leftRightBalance100", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 29: { + num: 29, // Average left platform center offset + name: "timeStanding", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1000, + offset: 0, + units: "s", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 30: { + num: 30, // Average right platform center offset + name: "avgLeftPco", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "mm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 31: { + num: 31, // Average left power phase angles. Data value indexes defined by power_phase_type. + name: "avgRightPco", + type: "sint8", + baseType: "sint8", + array: false, + scale: 1, + offset: 0, + units: "mm", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 32: { + num: 32, // Average left power phase peak angles. Data value indexes defined by power_phase_type. + name: "avgLeftPowerPhase", + type: "uint8", + baseType: "uint8", + array: true, + scale: 0.7111111, + offset: 0, + units: "degrees", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 33: { + num: 33, // Average right power phase angles. Data value indexes defined by power_phase_type. + name: "avgLeftPowerPhasePeak", + type: "uint8", + baseType: "uint8", + array: true, + scale: 0.7111111, + offset: 0, + units: "degrees", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 34: { + num: 34, // Average right power phase peak angles. Data value indexes defined by power_phase_type. + name: "avgRightPowerPhase", + type: "uint8", + baseType: "uint8", + array: true, + scale: 0.7111111, + offset: 0, + units: "degrees", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 35: { + num: 35, // Average power by position. Data value indexes defined by rider_position_type. + name: "avgRightPowerPhasePeak", + type: "uint8", + baseType: "uint8", + array: true, + scale: 0.7111111, + offset: 0, + units: "degrees", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 36: { + num: 36, // Maximum power by position. Data value indexes defined by rider_position_type. + name: "avgPowerPosition", + type: "uint16", + baseType: "uint16", + array: true, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 37: { + num: 37, + name: "maxPowerPosition", + type: "uint16", + baseType: "uint16", + array: true, + scale: 1, + offset: 0, + units: "watts", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 38: { + num: 38, + name: "avgLeftTorqueEffectiveness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 39: { + num: 39, + name: "avgRightTorqueEffectiveness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 40: { + num: 40, + name: "avgLeftPedalSmoothness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 41: { + num: 41, + name: "avgRightPedalSmoothness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 42: { + num: 42, // The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. + name: "avgCombinedPedalSmoothness", + type: "uint8", + baseType: "uint8", + array: false, + scale: 2, + offset: 0, + units: "percent", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 43: { + num: 43, // The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. + name: "avgFlow", + type: "float32", + baseType: "float32", + array: false, + scale: 1, + offset: 0, + units: "Flow", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 44: { + num: 44, + name: "totalGrit", + type: "float32", + baseType: "float32", + array: false, + scale: 1, + offset: 0, + units: "kGrit", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 47: { + num: 47, // # of active lengths of swim pool + name: "swimStroke", + type: "swimStroke", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 48: { + num: 48, + name: "numActiveLengths", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "lengths", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 49: { + num: 49, + name: "avgSwolf", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 50: { + num: 50, + name: "avgStrokeDistance", + type: "uint16", + baseType: "uint16", + array: false, + scale: 100, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 51: { + num: 51, + name: "avgStrokesPerLength", + type: "uint16", + baseType: "uint16", + array: false, + scale: 10, + offset: 0, + units: "strokes / length", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 52: { + num: 52, + name: "avgAscent", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 53: { + num: 53, + name: "maxAscent", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "m", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 54: { + num: 54, + name: "climbGradingScale", + type: "climbGradingScale", + baseType: "enum", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, + 55: { + num: 55, + name: "climbMaxGradeValue", + type: "uint32", + baseType: "uint32", + array: false, + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [{ + name: "climbMaxGradeYds", + type: "ydsGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 0 }, + ], + }, + { + name: "climbMaxGradeUiaa", + type: "uiaaGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 1 }, + ], + }, + { + name: "climbMaxGradeFrench", + type: "frenchGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 2 }, + ], + }, + { + name: "climbMaxGradeBritishAdjectival", + type: "britishAdjectivalGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 3 }, + ], + }, + { + name: "climbMaxGradeBritishTechnical", + type: "britishTechnicalGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 4 }, + ], + }, + { + name: "climbMaxGradeEwbank", + type: "ewbankGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 5 }, + ], + }, + { + name: "climbMaxGradeBrazilian", + type: "brazilianGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 6 }, + ], + }, + { + name: "climbMaxGradeSaxon", + type: "saxonGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 7 }, + ], + }, + { + name: "climbMaxGradeVermin", + type: "verminGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 8 }, + ], + }, + { + name: "climbMaxGradeFont", + type: "fontGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 9 }, + ], + }, + { + name: "climbMaxGradeDankyu", + type: "dankyuGradingScale", + baseType: "enum", + scale: 1, + offset: 0, + units: "", + bits: [], + components: [], + hasComponents: false, + map:[ + { name: "climbGradingScale", value: 10 }, + ], + }, + ] + }, + 56: { + num: 56, + name: "numFalls", + type: "uint16", + baseType: "uint16", array: false, scale: 1, offset: 0, @@ -14590,138 +17930,116 @@ const Profile = { hasComponents: false, subFields: [] }, - 28: { - num: 28, - name: "totalCalories", - type: "uint32", - baseType: "uint32", + 58: { + num: 58, + name: "numClimbsAttempted", + type: "uint16", + baseType: "uint16", array: false, scale: 1, offset: 0, - units: "kcal", - bits: [], - components: [], - isAccumulated: false, - hasComponents: false, - subFields: [] - }, - 74: { - num: 74, - name: "startElevation", - type: "uint32", - baseType: "uint32", - array: false, - scale: 5, - offset: 500, - units: "m", + units: "", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 78: { - num: 78, // Active time of split rounds - name: "activeTime", - type: "uint32", - baseType: "uint32", + 59: { + num: 59, + name: "numClimbsCompleted", + type: "uint16", + baseType: "uint16", array: false, - scale: 1000, + scale: 1, offset: 0, - units: "s", + units: "", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 110: { - num: 110, - name: "totalMovingTime", + 60: { + num: 60, // Distance of the longest split + name: "maxDistance", type: "uint32", baseType: "uint32", array: false, - scale: 1000, + scale: 100, offset: 0, - units: "s", + units: "m", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - }, - }, - 313: { - num: 313, - name: "splitSummary", - messagesKey: "splitSummaryMesgs", - fields: { - 254: { - num: 254, - name: "messageIndex", - type: "messageIndex", + 64: { + num: 64, + name: "metabolicCalories", + type: "uint16", baseType: "uint16", array: false, scale: 1, offset: 0, - units: "", + units: "kcal", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 0: { - num: 0, - name: "splitType", - type: "splitType", - baseType: "enum", + 65: { + num: 65, // total active time in all split rounds + name: "activeTime", + type: "uint32", + baseType: "uint32", array: false, - scale: 1, + scale: 1000, offset: 0, - units: "", + units: "s", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 3: { - num: 3, - name: "numSplits", - type: "uint16", - baseType: "uint16", + 66: { + num: 66, // fractional part of total_ascent + name: "totalFractionalAscent", + type: "uint8", + baseType: "uint8", array: false, - scale: 1, + scale: 100, offset: 0, - units: "", + units: "m", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 4: { - num: 4, - name: "totalTimerTime", - type: "uint32", - baseType: "uint32", + 67: { + num: 67, // fractional part of total_descent + name: "totalFractionalDescent", + type: "uint8", + baseType: "uint8", array: false, - scale: 1000, + scale: 100, offset: 0, - units: "s", + units: "m", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 5: { - num: 5, - name: "totalDistance", - type: "uint32", - baseType: "uint32", + 68: { + num: 68, // fractional part of avg_ascent + name: "avgFractionalAscent", + type: "uint8", + baseType: "uint8", array: false, scale: 100, offset: 0, @@ -14732,24 +18050,24 @@ const Profile = { hasComponents: false, subFields: [] }, - 6: { - num: 6, - name: "avgSpeed", - type: "uint32", - baseType: "uint32", + 69: { + num: 69, // fractional part of max_descent + name: "maxFractionalAscent", + type: "uint8", + baseType: "uint8", array: false, - scale: 1000, + scale: 100, offset: 0, - units: "m/s", + units: "m", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 7: { - num: 7, - name: "maxSpeed", + 71: { + num: 71, + name: "avgGradeAdjustedSpeed", type: "uint32", baseType: "uint32", array: false, @@ -14762,54 +18080,54 @@ const Profile = { hasComponents: false, subFields: [] }, - 8: { - num: 8, - name: "totalAscent", + 72: { + num: 72, + name: "avgStress", type: "uint16", baseType: "uint16", array: false, scale: 1, offset: 0, - units: "m", + units: "", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 9: { - num: 9, - name: "totalDescent", - type: "uint16", - baseType: "uint16", + 77: { + num: 77, + name: "totalMovingTime", + type: "uint32", + baseType: "uint32", array: false, - scale: 1, + scale: 1000, offset: 0, - units: "m", + units: "s", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 10: { - num: 10, - name: "avgHeartRate", - type: "uint8", - baseType: "uint8", + 79: { + num: 79, + name: "startTime", + type: "dateTime", + baseType: "uint32", array: false, scale: 1, offset: 0, - units: "bpm", + units: "", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 11: { - num: 11, - name: "maxHeartRate", + 87: { + num: 87, + name: "minHeartRate", type: "uint8", baseType: "uint8", array: false, @@ -14822,54 +18140,24 @@ const Profile = { hasComponents: false, subFields: [] }, - 12: { - num: 12, - name: "avgVertSpeed", - type: "sint32", - baseType: "sint32", - array: false, - scale: 1000, - offset: 0, - units: "m/s", - bits: [], - components: [], - isAccumulated: false, - hasComponents: false, - subFields: [] - }, - 13: { - num: 13, - name: "totalCalories", - type: "uint32", - baseType: "uint32", - array: false, - scale: 1, - offset: 0, - units: "kcal", - bits: [], - components: [], - isAccumulated: false, - hasComponents: false, - subFields: [] - }, - 65: { - num: 65, // total active time in all split rounds - name: "activeTime", - type: "uint32", - baseType: "uint32", + 91: { + num: 91, + name: "avgStanceTimePercent", + type: "uint16", + baseType: "uint16", array: false, - scale: 1000, + scale: 100, offset: 0, - units: "s", + units: "percent", bits: [], components: [], isAccumulated: false, hasComponents: false, subFields: [] }, - 77: { - num: 77, - name: "totalMovingTime", + 101: { + num: 101, + name: "maxTotalTimerTime", type: "uint32", baseType: "uint32", array: false, @@ -17224,6 +20512,21 @@ const Profile = { hasComponents: false, subFields: [] }, + 88: { + num: 88, + name: "metabolicCalories", + type: "uint16", + baseType: "uint16", + array: false, + scale: 1, + offset: 0, + units: "kcal", + bits: [], + components: [], + isAccumulated: false, + hasComponents: false, + subFields: [] + }, 89: { num: 89, // fractional part of total_ascent name: "totalFractionalAscent", @@ -23503,6 +26806,7 @@ types: { 82: "antChannelId", 101: "length", 103: "monitoringInfo", + 104: "battery", 105: "pad", 106: "slaveDevice", 127: "connectivity", @@ -24689,6 +27993,8 @@ types: { 350: "cadenceApp", 351: "unaWatch", 352: "tymewear", + 353: "exposureLights", + 354: "fortoCycling", 5759: "actigraphcorp", }, garminProduct: { @@ -28198,6 +31504,354 @@ types: { 1: "volumeSac", // Volumetric Surface Air Consumption 2: "rmv", // Respiratory Minute Volume }, + climbGradingScale: { + 0: "yds", + 1: "uiaa", + 2: "french", + 3: "britishAdjectival", + 4: "britishTechnical", + 5: "ewbank", + 6: "brazilian", + 7: "saxon", + 8: "vermin", + 9: "font", + 10: "dankyu", + 11: "ydsPm", // YDS Plus Minus Grading Scale + }, + ydsGradingScale: { + 0: "51", // 5.1 + 1: "52", // 5.2 + 2: "53", // 5.3 + 3: "54", // 5.4 + 4: "55", // 5.5 + 5: "56", // 5.6 + 6: "57", // 5.7 + 7: "58", // 5.8 + 8: "59", // 5.9 + 9: "510", // 5.1 + 10: "510a", // 5.10a + 11: "510b", // 5.10b + 12: "510c", // 5.10c + 13: "510d", // 5.10d + 14: "511", // 5.11 + 15: "511a", // 5.11a + 16: "511b", // 5.11b + 17: "511c", // 5.11c + 18: "511d", // 5.11d + 19: "512", // 5.12 + 20: "512a", // 5.12a + 21: "512b", // 5.12b + 22: "512c", // 5.12c + 23: "512d", // 5.12d + 24: "513", // 5.13 + 25: "513a", // 5.13a + 26: "513b", // 5.13b + 27: "513c", // 5.13c + 28: "513d", // 5.13d + 29: "514", // 5.14 + 30: "514a", // 5.14a + 31: "514b", // 5.14b + 32: "514c", // 5.14c + 33: "514d", // 5.14d + 34: "515", // 5.15 + 35: "515a", // 5.15a + 36: "515b", // 5.15b + 37: "515c", // 5.15c + 38: "515d", // 5.15d + 39: "51Minus", // 5.1- + 40: "51Plus", // 5.1+ + 41: "52Minus", // 5.2- + 42: "52Plus", // 5.2+ + 43: "53Minus", // 5.3- + 44: "53Plus", // 5.3+ + 45: "54Minus", // 5.4- + 46: "54Plus", // 5.4+ + 47: "55Minus", // 5.5- + 48: "55Plus", // 5.5+ + 49: "56Minus", // 5.6- + 50: "56Plus", // 5.6+ + 51: "57Minus", // 5.7- + 52: "57Plus", // 5.7+ + 53: "58Minus", // 5.8- + 54: "58Plus", // 5.8+ + 55: "59Minus", // 5.9- + 56: "59Plus", // 5.9+ + 57: "510Minus", // 5.10- + 58: "510Plus", // 5.10+ + 59: "511Minus", // 5.11- + 60: "511Plus", // 5.11+ + 61: "512Minus", // 5.12- + 62: "512Plus", // 5.12+ + 63: "513Minus", // 5.13- + 64: "513Plus", // 5.13+ + 65: "514Minus", // 5.14- + 66: "514Plus", // 5.14+ + 67: "515Minus", // 5.15- + 68: "515Plus", // 5.15+ + }, + uiaaGradingScale: { + 0: "i", // I + 1: "iI", // II + 2: "iII", // III + 3: "iVMinus", // IV- + 4: "iV", // IV + 5: "iVPlus", // IV+ + 6: "vMinus", // V- + 7: "v", // V + 8: "vPlus", // V+ + 9: "vIMinus", // VI- + 10: "vI", // VI + 11: "vIPlus", // VI+ + 12: "vIIMinus", // VII- + 13: "vII", // VII + 14: "vIIPlus", // VII+ + 15: "vIIIMinus", // VIII- + 16: "vIII", // VIII + 17: "vIIIPlus", // VIII+ + 18: "iXMinus", // IX- + 19: "iX", // IX + 20: "iXPlus", // IX+ + 21: "xMinus", // X- + 22: "x", // X + 23: "xPlus", // X+ + 24: "xIMinus", // XI- + 25: "xI", // XI + 26: "xIPlus", // XI+ + 27: "xIIMinus", // XII- + }, + frenchGradingScale: { + 0: "1", // 1 + 1: "2", // 2 + 2: "3", // 3 + 3: "4a", // 4a + 4: "4b", // 4b + 5: "4c", // 4c + 6: "5a", // 5a + 7: "5b", // 5b + 8: "5c", // 5c + 9: "6a", // 6a + 10: "6aPlus", // 6a+ + 11: "6b", // 6b + 12: "6bPlus", // 6b+ + 13: "6c", // 6c + 14: "6cPlus", // 6c+ + 15: "7a", // 7a + 16: "7aPlus", // 7a+ + 17: "7b", // 7b + 18: "7bPlus", // 7b+ + 19: "7c", // 7c + 20: "7cPlus", // 7c+ + 21: "8a", // 8a + 22: "8aPlus", // 8a+ + 23: "8b", // 8b + 24: "8bPlus", // 8b+ + 25: "8c", // 8c + 26: "8cPlus", // 8c+ + 27: "9a", // 9a + 28: "9aPlus", // 9a+ + 29: "9b", // 9b + }, + britishAdjectivalGradingScale: { + 0: "m", // M + 1: "d", // D + 2: "hD", // HD + 3: "vD", // VD + 4: "mS", // MS + 5: "s", // S + 6: "hS", // HS + 7: "mVS", // MVS + 8: "vS", // VS + 9: "hVS", // HVS + 10: "e1", // E1 + 11: "e2", // E2 + 12: "e3", // E3 + 13: "e4", // E4 + 14: "e5", // E5 + 15: "e6", // E6 + 16: "e7", // E7 + 17: "e8", // E8 + 18: "e9", // E9 + 19: "e10", // E10 + 20: "e11", // E11 + }, + britishTechnicalGradingScale: { + 0: "1", // 1 + 1: "2", // 2 + 2: "3", // 3 + 3: "4a", // 4a + 4: "4b", // 4b + 5: "4c", // 4c + 6: "5a", // 5a + 7: "5b", // 5b + 8: "5c", // 5c + 9: "6a", // 6a + 10: "6b", // 6b + 11: "6c", // 6c + 12: "7a", // 7a + 13: "7b", // 7b + 14: "7c", // 7c + }, + ewbankGradingScale: { + 0: "4", // 4 + 1: "5", // 5 + 2: "6", // 6 + 3: "7", // 7 + 4: "8", // 8 + 5: "9", // 9 + 6: "10", // 10 + 7: "11", // 11 + 8: "12", // 12 + 9: "13", // 13 + 10: "14", // 14 + 11: "15", // 15 + 12: "16", // 16 + 13: "17", // 17 + 14: "18", // 18 + 15: "19", // 19 + 16: "20", // 20 + 17: "21", // 21 + 18: "22", // 22 + 19: "23", // 23 + 20: "24", // 24 + 21: "25", // 25 + 22: "26", // 26 + 23: "27", // 27 + 24: "28", // 28 + 25: "29", // 29 + 26: "30", // 30 + 27: "31", // 31 + 28: "32", // 32 + 29: "33", // 33 + 30: "34", // 34 + 31: "35", // 35 + 32: "36", // 36 + 33: "37", // 37 + 34: "38", // 38 + }, + brazilianGradingScale: { + 0: "2", // 2 + 1: "3", // 3 + 2: "3c", // 3c + 3: "4", // 4 + 4: "5a", // 5a + 5: "5b", // 5b + 6: "5c", // 5c + 7: "6a", // 6a + 8: "6b", // 6b + 9: "6c", // 6c + 10: "7a", // 7a + 11: "7b", // 7b + 12: "7c", // 7c + 13: "8a", // 8a + 14: "8b", // 8b + 15: "8c", // 8c + 16: "9a", // 9a + 17: "9b", // 9b + 18: "9c", // 9c + 19: "10a", // 10a + 20: "10b", // 10b + 21: "10c", // 10c + 22: "11a", // 11a + 23: "11b", // 11b + 24: "11c", // 11c + 25: "12a", // 12a + 26: "12b", // 12b + }, + saxonGradingScale: { + 0: "i", // I + 1: "iI", // II + 2: "iII", // III + 3: "iV", // IV + 4: "v", // V + 5: "vI", // VI + 6: "vIIA", // VIIa + 7: "vIIB", // VIIb + 8: "vIIC", // VIIc + 9: "vIIIA", // VIIIa + 10: "vIIIB", // VIIIb + 11: "vIIIC", // VIIIc + 12: "iXA", // IXa + 13: "iXB", // IXb + 14: "iXC", // IXc + 15: "xA", // Xa + 16: "xB", // Xb + 17: "xC", // Xc + 18: "xIA", // XIa + 19: "xIB", // XIb + 20: "xIC", // XIc + 21: "xIIA", // XIIa + 22: "xIIB", // XIIb + 23: "xIIC", // XIIc + }, + verminGradingScale: { + 0: "vb", // VB + 1: "v0", // V0 + 2: "v1", // V1 + 3: "v2", // V2 + 4: "v3", // V3 + 5: "v4", // V4 + 6: "v5", // V5 + 7: "v6", // V6 + 8: "v7", // V7 + 9: "v8", // V8 + 10: "v9", // V9 + 11: "v10", // V10 + 12: "v11", // V11 + 13: "v12", // V12 + 14: "v13", // V13 + 15: "v14", // V14 + 16: "v15", // V15 + 17: "v16", // V16 + 18: "v17", // V17 + }, + fontGradingScale: { + 0: "1", // 1 + 1: "2", // 2 + 2: "3", // 3 + 3: "4", // 4 + 4: "4Plus", // 4+ + 5: "5", // 5 + 6: "5Plus", // 5+ + 7: "6a", // 6A + 8: "6aPlus", // 6A+ + 9: "6b", // 6B + 10: "6bPlus", // 6B+ + 11: "6c", // 6C + 12: "6cPlus", // 6C+ + 13: "7a", // 7A + 14: "7aPlus", // 7A+ + 15: "7b", // 7B + 16: "7bPlus", // 7B+ + 17: "7c", // 7C + 18: "7cPlus", // 7C+ + 19: "8a", // 8A + 20: "8aPlus", // 8A+ + 21: "8b", // 8B + 22: "8bPlus", // 8B+ + 23: "8c", // 8C + 24: "8cPlus", // 8C+ + 25: "9a", // 9A + }, + dankyuGradingScale: { + 0: "7Kyuu", // 7 kyuu + 1: "6Kyuu", // 6 kyuu + 2: "5Kyuu", // 5 kyuu + 3: "4Kyuu", // 4 kyuu + 4: "3Kyuu", // 3 kyuu + 5: "2Kyuu", // 2 kyuu + 6: "1Kyuu", // 1 kyuu + 7: "1Dan", // 1 dan + 8: "2Dan", // 2 dan + 9: "3Dan", // 3 dan + 10: "4Dan", // 4 dan + 11: "5Dan", // 5 dan + }, + splitStatus: { + 0: "failure", + 1: "success", + 2: "climbAttempted", + 3: "climbCompleted", + }, tapSensitivity: { 0: "high", 1: "medium", @@ -28260,6 +31914,24 @@ types: { 0: "standard", // Standard Diver Alert Network no-fly guidance 1: "flat24Hours", // Flat 24 hour no-fly guidance }, + diveSectionType: { + 0: "ascent", + 1: "descent", + 2: "hang", + }, + apneaDiscipline: { + 0: "constantWeightWithFins", + 1: "constantWeightWithBifins", + 2: "constantWeightWithoutFins", + 3: "dynamicWithFins", + 4: "dynamicWithBifins", + 5: "dynamicWithoutFins", + 6: "freeImmersion", + 7: "noLimit", + 8: "speedEnduranceApnea", + 9: "staticApnea", + 10: "variableWeight", + }, }, MesgNum : { FILE_ID: 0, @@ -28302,6 +31974,7 @@ MesgNum : { DEVICE_INFO: 23, DEVICE_AUX_BATTERY_INFO: 375, TRAINING_FILE: 72, + BATTERY: 104, WEATHER_CONDITIONS: 128, WEATHER_ALERT: 129, GPS_METADATA: 160, diff --git a/src/stream.js b/src/stream.js index 86c2778..4e10836 100644 --- a/src/stream.js +++ b/src/stream.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/types/crc-calculator.d.ts b/src/types/crc-calculator.d.ts index dc099a9..ab2e792 100644 --- a/src/types/crc-calculator.d.ts +++ b/src/types/crc-calculator.d.ts @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/types/decoder.d.ts b/src/types/decoder.d.ts index a058a5a..83e2ceb 100644 --- a/src/types/decoder.d.ts +++ b/src/types/decoder.d.ts @@ -5,14 +5,14 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// -import { Stream } from "./stream"; -import { Mesg } from "./mesg"; -import { FitMessages, DeveloperDataIdMesg, FieldDescriptionMesg } from "./mesgs"; +import { Stream } from "./stream.js"; +import { Mesg } from "./mesg.js"; +import { FitMessages, DeveloperDataIdMesg, FieldDescriptionMesg } from "./mesgs.js"; /** Decodes FIT binary data from a {@link Stream}. */ export class Decoder { diff --git a/src/types/encoder.d.ts b/src/types/encoder.d.ts index c6faa4f..f6ed4ca 100644 --- a/src/types/encoder.d.ts +++ b/src/types/encoder.d.ts @@ -5,13 +5,13 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// -import { Encodable, Mesg } from "./mesg"; -import { DeveloperDataIdMesg, FieldDescriptionMesg } from "./mesgs"; +import { Encodable, Mesg } from "./mesg.js"; +import { DeveloperDataIdMesg, FieldDescriptionMesg } from "./mesgs.js"; export interface FieldDescription { /** The Developer Data Id message. */ diff --git a/src/types/mesg.d.ts b/src/types/mesg.d.ts index dfce270..5aafe98 100644 --- a/src/types/mesg.d.ts +++ b/src/types/mesg.d.ts @@ -5,12 +5,12 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// -import Types from "./types"; +import Types from "./types.js"; /** A FIT field value — a scalar or array of one of the primitive FIT base types. */ export type FieldValue = diff --git a/src/types/mesgs.d.ts b/src/types/mesgs.d.ts index 1bd5c86..47f255f 100644 --- a/src/types/mesgs.d.ts +++ b/src/types/mesgs.d.ts @@ -5,13 +5,13 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// -import { Mesg } from "./mesg"; -import Types from "./types"; +import { Mesg } from "./mesg.js"; +import Types from "./types.js"; /** @@ -541,9 +541,17 @@ export interface SessionMesg extends Mesg { maxHeartRate?: Types.Uint8; /** total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time */ avgCadence?: Types.Uint8; - avgRunningCadence?: Types.Uint8; + avgRunningCadence?: Types.Uint8; + avgSwimmingCadence?: Types.Uint8; + avgPaddlesportCadence?: Types.Uint8; + /** average pushes per minute in a session*/ + avgPushCadence?: Types.Uint8; maxCadence?: Types.Uint8; - maxRunningCadence?: Types.Uint8; + maxRunningCadence?: Types.Uint8; + maxSwimmingCadence?: Types.Uint8; + maxPaddlesportCadence?: Types.Uint8; + /** max pushes per minute in a session*/ + maxPushCadence?: Types.Uint8; /** total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time */ avgPower?: Types.Uint16; maxPower?: Types.Uint16; @@ -603,6 +611,8 @@ export interface SessionMesg extends Mesg { bestLapIndex?: Types.Uint16; minAltitude?: Types.Float64; activeTime?: Types.Float64; + avgStrokesPerLength?: Types.Float64; + avgSwolf?: Types.Uint16; playerScore?: Types.Uint16; opponentScore?: Types.Uint16; opponentName?: Types.String; @@ -638,6 +648,9 @@ export interface SessionMesg extends Mesg { avgLeftPedalSmoothness?: Types.Float64; avgRightPedalSmoothness?: Types.Float64; avgCombinedPedalSmoothness?: Types.Float64; + numSegmentLaps?: Types.Uint16; + frontGearShiftCount?: Types.Uint16; + rearGearShiftCount?: Types.Uint16; /** Sport name from associated sport mesg */ sportProfileName?: Types.String; sportIndex?: Types.Uint8; @@ -731,6 +744,7 @@ export interface SessionMesg extends Mesg { avgCoreTemperature?: Types.Float64; minCoreTemperature?: Types.Float64; maxCoreTemperature?: Types.Float64; + avgGradeAdjustedSpeed?: Types.Float64; } export interface LapMesg extends Mesg { @@ -751,6 +765,8 @@ export interface LapMesg extends Mesg { totalCycles?: Types.Uint32; totalStrides?: Types.Uint32; totalStrokes?: Types.Uint32; + /** total number of pushes in a lap*/ + totalPushes?: Types.Uint32; totalCalories?: Types.Uint16; /** If New Leaf */ totalFatCalories?: Types.Uint16; @@ -760,9 +776,17 @@ export interface LapMesg extends Mesg { maxHeartRate?: Types.Uint8; /** total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time */ avgCadence?: Types.Uint8; - avgRunningCadence?: Types.Uint8; + avgRunningCadence?: Types.Uint8; + avgSwimmingCadence?: Types.Uint8; + avgPaddlesportCadence?: Types.Uint8; + /** average pushes per minute in a lap*/ + avgPushCadence?: Types.Uint8; maxCadence?: Types.Uint8; - maxRunningCadence?: Types.Uint8; + maxRunningCadence?: Types.Uint8; + maxSwimmingCadence?: Types.Uint8; + maxPaddlesportCadence?: Types.Uint8; + /** max pushes per minute in a lap*/ + maxPushCadence?: Types.Uint8; /** total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time */ avgPower?: Types.Uint16; maxPower?: Types.Uint16; @@ -772,6 +796,14 @@ export interface LapMesg extends Mesg { lapTrigger?: Types.LapTrigger; sport?: Types.Sport; eventGroup?: Types.Uint8; + /** North east corner latitude. */ + necLat?: Types.Sint32; + /** North east corner longitude. */ + necLong?: Types.Sint32; + /** South west corner latitude. */ + swcLat?: Types.Sint32; + /** South west corner latitude. */ + swcLong?: Types.Sint32; /** # of lengths of swim pool */ numLengths?: Types.Uint16; normalizedPower?: Types.Uint16; @@ -807,6 +839,7 @@ export interface LapMesg extends Mesg { minHeartRate?: Types.Uint8; activeTime?: Types.Float64; wktStepIndex?: Types.MessageIndex; + avgSwolf?: Types.Uint16; opponentScore?: Types.Uint16; /** stroke_type enum used as the index */ strokeCount?: Types.Uint16[]; @@ -834,11 +867,14 @@ export interface LapMesg extends Mesg { minSaturatedHemoglobinPercent?: Types.Float64[]; /** Max percentage of hemoglobin saturated with oxygen */ maxSaturatedHemoglobinPercent?: Types.Float64[]; + avgStrokesPerLength?: Types.Float64; avgLeftTorqueEffectiveness?: Types.Float64; avgRightTorqueEffectiveness?: Types.Float64; avgLeftPedalSmoothness?: Types.Float64; avgRightPedalSmoothness?: Types.Float64; avgCombinedPedalSmoothness?: Types.Float64; + frontGearShiftCount?: Types.Uint16; + rearGearShiftCount?: Types.Uint16; /** Total time spent in the standing position */ timeStanding?: Types.Float64; /** Number of transitions to the standing state */ @@ -896,6 +932,7 @@ export interface LapMesg extends Mesg { avgGrit?: Types.Float32; /** The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. */ avgFlow?: Types.Float32; + metabolicCalories?: Types.Uint16; /** fractional part of total_ascent */ totalFractionalAscent?: Types.Float64; /** fractional part of total_descent */ @@ -903,6 +940,7 @@ export interface LapMesg extends Mesg { avgCoreTemperature?: Types.Float64; minCoreTemperature?: Types.Float64; maxCoreTemperature?: Types.Float64; + avgGradeAdjustedSpeed?: Types.Float64; } export interface LengthMesg extends Mesg { @@ -930,6 +968,7 @@ export interface LengthMesg extends Mesg { enhancedMaxRespirationRate?: Types.Float64; avgRespirationRate?: Types.Uint8; maxRespirationRate?: Types.Uint8; + metabolicCalories?: Types.Uint16; } export interface RecordMesg extends Mesg { @@ -1162,6 +1201,11 @@ export interface TrainingFileMesg extends Mesg { timeCreated?: Types.DateTime; } +export interface BatteryMesg extends Mesg { + timestamp?: Types.DateTime; + capacity?: Types.Uint8; +} + export interface WeatherConditionsMesg extends Mesg { /** time of update for current conditions, else forecast time */ timestamp?: Types.DateTime; @@ -1305,6 +1349,7 @@ export interface BarometerDataMesg extends Mesg { sampleTimeOffset?: Types.Uint16[]; /** These are the raw ADC reading. The samples may span across seconds. A conversion will need to be done on this data once read. */ baroPres?: Types.Uint32[]; + enhancedAltitude?: Types.Float64[]; } export interface ThreeDSensorCalibrationMesg extends Mesg { @@ -1479,14 +1524,27 @@ export interface JumpMesg extends Mesg { export interface SplitMesg extends Mesg { messageIndex?: Types.MessageIndex; + timestamp?: Types.DateTime; splitType?: Types.SplitType; totalElapsedTime?: Types.Float64; totalTimerTime?: Types.Float64; totalDistance?: Types.Float64; avgSpeed?: Types.Float64; startTime?: Types.DateTime; + sport?: Types.Sport; + subSport?: Types.SubSport; totalAscent?: Types.Uint16; totalDescent?: Types.Uint16; + avgHeartRate?: Types.Uint8; + maxHeartRate?: Types.Uint8; + /** North east corner latitude */ + necLat?: Types.Sint32; + /** North east corner longitude */ + necLong?: Types.Sint32; + /** South west corner latitude */ + swcLat?: Types.Sint32; + /** South west corner longitude */ + swcLong?: Types.Sint32; startPositionLat?: Types.Sint32; startPositionLong?: Types.Sint32; endPositionLat?: Types.Sint32; @@ -1495,15 +1553,143 @@ export interface SplitMesg extends Mesg { avgVertSpeed?: Types.Float64; endTime?: Types.DateTime; totalCalories?: Types.Uint32; + avgCadence?: Types.Float64; + avgRunningCadence?: Types.Float64; + avgSwimmingCadence?: Types.Float64; + avgPaddlesportCadence?: Types.Float64; + /** average pushes per minute in a split*/ + avgPushCadence?: Types.Uint16; + maxCadence?: Types.Float64; + maxRunningCadence?: Types.Float64; + maxSwimmingCadence?: Types.Float64; + maxPaddlesportCadence?: Types.Float64; + /** max pushes per minute in a split*/ + maxPushCadence?: Types.Uint16; + totalCycles?: Types.Uint32; + totalStrides?: Types.Uint32; + totalStrokes?: Types.Uint32; + /** total reps in a split round*/ + totalReps?: Types.Uint32; + /** total number of pushes in a split*/ + totalPushes?: Types.Uint32; + avgTemperature?: Types.Sint8; + maxTemperature?: Types.Sint8; + minTemperature?: Types.Sint8; + avgVerticalOscillation?: Types.Float64; + avgVerticalRatio?: Types.Float64; + avgStanceTime?: Types.Float64; + avgStanceTimeBalance?: Types.Float64; + avgStepLength?: Types.Float64; + avgPower?: Types.Uint16; + maxPower?: Types.Uint16; + normalizedPower?: Types.Uint16; + leftRightBalance?: Types.LeftRightBalance100; + /** Total time spent in the standing position */ + timeStanding?: Types.Float64; + /** Average left platform center offset */ + avgLeftPco?: Types.Sint8; + /** Average right platform center offset */ + avgRightPco?: Types.Sint8; + /** Average left power phase angles. Data value indexes defined by power_phase_type. */ + avgLeftPowerPhase?: Types.Float64[]; + /** Average left power phase peak angles. Data value indexes defined by power_phase_type. */ + avgLeftPowerPhasePeak?: Types.Float64[]; + /** Average right power phase angles. Data value indexes defined by power_phase_type. */ + avgRightPowerPhase?: Types.Float64[]; + /** Average right power phase peak angles. Data value indexes defined by power_phase_type. */ + avgRightPowerPhasePeak?: Types.Float64[]; + /** Average power by position. Data value indexes defined by rider_position_type. */ + avgPowerPosition?: Types.Uint16[]; + /** Maximum power by position. Data value indexes defined by rider_position_type. */ + maxPowerPosition?: Types.Uint16[]; + avgLeftTorqueEffectiveness?: Types.Float64; + avgRightTorqueEffectiveness?: Types.Float64; + avgLeftPedalSmoothness?: Types.Float64; + avgRightPedalSmoothness?: Types.Float64; + avgCombinedPedalSmoothness?: Types.Float64; + /** The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. */ + avgFlow?: Types.Float32; + /** The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. */ + totalGrit?: Types.Float32; + swimStroke?: Types.SwimStroke; + /** # of active lengths of swim pool */ + numActiveLengths?: Types.Uint16; + avgSwolf?: Types.Uint16; + avgStrokeDistance?: Types.Float64; + avgStrokesPerLength?: Types.Float64; + /** This is only set for split types that will trigger the end of a lap when the split ends */ + firstLapIndex?: Types.Uint16; + /** This is only set for split types that will trigger the end of a lap when the split ends */ + numLaps?: Types.Uint16; + climbGradingScale?: Types.ClimbGradingScale; + climbGradeValue?: Types.Uint32; + climbGradeYds?: Types.YdsGradingScale; + climbGradeUiaa?: Types.UiaaGradingScale; + climbGradeFrench?: Types.FrenchGradingScale; + climbGradeBritishAdjectival?: Types.BritishAdjectivalGradingScale; + climbGradeBritishTechnical?: Types.BritishTechnicalGradingScale; + climbGradeEwbank?: Types.EwbankGradingScale; + climbGradeBrazilian?: Types.BrazilianGradingScale; + climbGradeSaxon?: Types.SaxonGradingScale; + climbGradeVermin?: Types.VerminGradingScale; + climbGradeFont?: Types.FontGradingScale; + climbGradeDankyu?: Types.DankyuGradingScale; + /** Use with indoor climbing activities only */ + status?: Types.SplitStatus; + /** Use with indoor climbing activities only */ + numFalls?: Types.Uint16; + /** Use with indoor climbing activities only */ + climbSend?: Types.Bool; startElevation?: Types.Float64; /** Active time of split rounds */ activeTime?: Types.Float64; + metabolicCalories?: Types.Uint16; + /** fractional part of total_ascent */ + totalFractionalAscent?: Types.Float64; + /** fractional part of total_descent */ + totalFractionalDescent?: Types.Float64; + avgGrade?: Types.Float64; + maxGrade?: Types.Float64; + minCadence?: Types.Float64; + minRunningCadence?: Types.Float64; + minSwimmingCadence?: Types.Float64; + minPaddlesportCadence?: Types.Float64; + /** min pushes per minute in a split*/ + minPushCadence?: Types.Uint16; + avgGradeAdjustedSpeed?: Types.Float64; + avgStress?: Types.Uint16; + avgVam?: Types.Float64; + jumpCount?: Types.Uint8; totalMovingTime?: Types.Float64; + diveSectionType?: Types.DiveSectionType; + avgAscentRate?: Types.Float64; + maxAscentRate?: Types.Float64; + avgDescentRate?: Types.Float64; + maxDescentRate?: Types.Float64; + totalAscentTime?: Types.Float64; + totalDescentTime?: Types.Float64; + totalHangTime?: Types.Float64; + apneaDiscipline?: Types.ApneaDiscipline; + /** Average depth. 0 if above water */ + avgDepth?: Types.Float64; + /** Max depth. 0 if above water */ + maxDepth?: Types.Float64; + minHeartRate?: Types.Uint8; + /** Time since end of last dive */ + surfaceInterval?: Types.Uint32; + totalFractionalCycles?: Types.Float64; + avgStanceTimePercent?: Types.Float64; + totalAnaerobicTrainingEffect?: Types.Float64; + frontGearShiftCount?: Types.Uint16; + rearGearShiftCount?: Types.Uint16; } export interface SplitSummaryMesg extends Mesg { messageIndex?: Types.MessageIndex; + timestamp?: Types.DateTime; splitType?: Types.SplitType; + sport?: Types.Sport; + subSport?: Types.SubSport; numSplits?: Types.Uint16; totalTimerTime?: Types.Float64; totalDistance?: Types.Float64; @@ -1515,9 +1701,108 @@ export interface SplitSummaryMesg extends Mesg { maxHeartRate?: Types.Uint8; avgVertSpeed?: Types.Float64; totalCalories?: Types.Uint32; + avgCadence?: Types.Float64; + avgRunningCadence?: Types.Float64; + avgSwimmingCadence?: Types.Float64; + avgPaddlesportCadence?: Types.Float64; + /** average pushes per minute in all splits of the type*/ + avgPushCadence?: Types.Uint16; + maxCadence?: Types.Float64; + maxRunningCadence?: Types.Float64; + maxSwimmingCadence?: Types.Float64; + maxPaddlesportCadence?: Types.Float64; + /** max pushes per minute in all splits of the type*/ + maxPushCadence?: Types.Uint16; + totalCycles?: Types.Uint32; + totalStrides?: Types.Uint32; + totalStrokes?: Types.Uint32; + /** total reps in all splits*/ + totalReps?: Types.Uint32; + /** total number of pushes in all splits of the type*/ + totalPushes?: Types.Uint32; + avgTemperature?: Types.Sint8; + maxTemperature?: Types.Sint8; + minTemperature?: Types.Sint8; + avgVerticalOscillation?: Types.Float64; + avgVerticalRatio?: Types.Float64; + avgStanceTime?: Types.Float64; + avgStanceTimeBalance?: Types.Float64; + avgStepLength?: Types.Float64; + avgPower?: Types.Uint16; + maxPower?: Types.Uint16; + normalizedPower?: Types.Uint16; + /** Total time spent in the standing position */ + leftRightBalance?: Types.LeftRightBalance100; + /** Average left platform center offset */ + timeStanding?: Types.Float64; + /** Average right platform center offset */ + avgLeftPco?: Types.Sint8; + /** Average left power phase angles. Data value indexes defined by power_phase_type. */ + avgRightPco?: Types.Sint8; + /** Average left power phase peak angles. Data value indexes defined by power_phase_type. */ + avgLeftPowerPhase?: Types.Float64[]; + /** Average right power phase angles. Data value indexes defined by power_phase_type. */ + avgLeftPowerPhasePeak?: Types.Float64[]; + /** Average right power phase peak angles. Data value indexes defined by power_phase_type. */ + avgRightPowerPhase?: Types.Float64[]; + /** Average power by position. Data value indexes defined by rider_position_type. */ + avgRightPowerPhasePeak?: Types.Float64[]; + /** Maximum power by position. Data value indexes defined by rider_position_type. */ + avgPowerPosition?: Types.Uint16[]; + maxPowerPosition?: Types.Uint16[]; + avgLeftTorqueEffectiveness?: Types.Float64; + avgRightTorqueEffectiveness?: Types.Float64; + avgLeftPedalSmoothness?: Types.Float64; + avgRightPedalSmoothness?: Types.Float64; + /** The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. */ + avgCombinedPedalSmoothness?: Types.Float64; + /** The grit score estimates how challenging a route could be for a cyclist in terms of time spent going over sharp turns or large grade slopes. */ + avgFlow?: Types.Float32; + totalGrit?: Types.Float32; + /** # of active lengths of swim pool */ + swimStroke?: Types.SwimStroke; + numActiveLengths?: Types.Uint16; + avgSwolf?: Types.Uint16; + avgStrokeDistance?: Types.Float64; + avgStrokesPerLength?: Types.Float64; + avgAscent?: Types.Uint16; + maxAscent?: Types.Uint16; + climbGradingScale?: Types.ClimbGradingScale; + climbMaxGradeValue?: Types.Uint32; + climbMaxGradeYds?: Types.YdsGradingScale; + climbMaxGradeUiaa?: Types.UiaaGradingScale; + climbMaxGradeFrench?: Types.FrenchGradingScale; + climbMaxGradeBritishAdjectival?: Types.BritishAdjectivalGradingScale; + climbMaxGradeBritishTechnical?: Types.BritishTechnicalGradingScale; + climbMaxGradeEwbank?: Types.EwbankGradingScale; + climbMaxGradeBrazilian?: Types.BrazilianGradingScale; + climbMaxGradeSaxon?: Types.SaxonGradingScale; + climbMaxGradeVermin?: Types.VerminGradingScale; + climbMaxGradeFont?: Types.FontGradingScale; + climbMaxGradeDankyu?: Types.DankyuGradingScale; + numFalls?: Types.Uint16; + numClimbsAttempted?: Types.Uint16; + numClimbsCompleted?: Types.Uint16; + /** Distance of the longest split */ + maxDistance?: Types.Float64; + metabolicCalories?: Types.Uint16; /** total active time in all split rounds */ activeTime?: Types.Float64; + /** fractional part of total_ascent */ + totalFractionalAscent?: Types.Float64; + /** fractional part of total_descent */ + totalFractionalDescent?: Types.Float64; + /** fractional part of avg_ascent */ + avgFractionalAscent?: Types.Float64; + /** fractional part of max_descent */ + maxFractionalAscent?: Types.Float64; + avgGradeAdjustedSpeed?: Types.Float64; + avgStress?: Types.Uint16; totalMovingTime?: Types.Float64; + startTime?: Types.DateTime; + minHeartRate?: Types.Uint8; + avgStanceTimePercent?: Types.Float64; + maxTotalTimerTime?: Types.Float64; } export interface ClimbProMesg extends Mesg { @@ -1760,6 +2045,7 @@ export interface SegmentLapMesg extends Mesg { avgGrit?: Types.Float32; /** The flow score estimates how long distance wise a cyclist deaccelerates over intervals where deacceleration is unnecessary such as smooth turns or small grade angle intervals. */ avgFlow?: Types.Float32; + metabolicCalories?: Types.Uint16; /** fractional part of total_ascent */ totalFractionalAscent?: Types.Float64; /** fractional part of total_descent */ @@ -2556,6 +2842,7 @@ export interface FitMessages { deviceInfoMesgs?: DeviceInfoMesg[]; deviceAuxBatteryInfoMesgs?: DeviceAuxBatteryInfoMesg[]; trainingFileMesgs?: TrainingFileMesg[]; + batteryMesgs?: BatteryMesg[]; weatherConditionsMesgs?: WeatherConditionsMesg[]; weatherAlertMesgs?: WeatherAlertMesg[]; gpsMetadataMesgs?: GpsMetadataMesg[]; diff --git a/src/types/profile.d.ts b/src/types/profile.d.ts index 3911bfd..a7f3fd4 100644 --- a/src/types/profile.d.ts +++ b/src/types/profile.d.ts @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/types/stream.d.ts b/src/types/stream.d.ts index 84505fe..7137358 100644 --- a/src/types/stream.d.ts +++ b/src/types/stream.d.ts @@ -5,13 +5,13 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// -import { CrcCalculator } from "./crc-calculator"; -import { FieldValue } from "./mesg"; +import { CrcCalculator } from "./crc-calculator.js"; +import { FieldValue } from "./mesg.js"; /** Represents a FIT file's bytes and provides sequential read access. */ export class Stream { diff --git a/src/types/types.d.ts b/src/types/types.d.ts index 962dd58..87d5d6e 100644 --- a/src/types/types.d.ts +++ b/src/types/types.d.ts @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// @@ -113,6 +113,7 @@ declare namespace Types { | "antChannelId" | "length" | "monitoringInfo" + | "battery" | "pad" | "slaveDevice" | "connectivity" @@ -1312,6 +1313,8 @@ declare namespace Types { | "cadenceApp" | "unaWatch" | "tymewear" + | "exposureLights" + | "fortoCycling" | "actigraphcorp"; export type GarminProduct = number @@ -4825,6 +4828,355 @@ declare namespace Types { | "volumeSac" /** Volumetric Surface Air Consumption */ | "rmv" /** Respiratory Minute Volume */; + export type ClimbGradingScale = number + | "yds" + | "uiaa" + | "french" + | "britishAdjectival" + | "britishTechnical" + | "ewbank" + | "brazilian" + | "saxon" + | "vermin" + | "font" + | "dankyu" + | "ydsPm" /** YDS Plus Minus Grading Scale */; + + export type YdsGradingScale = number + | "51" /** 5.1 */ + | "52" /** 5.2 */ + | "53" /** 5.3 */ + | "54" /** 5.4 */ + | "55" /** 5.5 */ + | "56" /** 5.6 */ + | "57" /** 5.7 */ + | "58" /** 5.8 */ + | "59" /** 5.9 */ + | "510" /** 5.1 */ + | "510a" /** 5.10a */ + | "510b" /** 5.10b */ + | "510c" /** 5.10c */ + | "510d" /** 5.10d */ + | "511" /** 5.11 */ + | "511a" /** 5.11a */ + | "511b" /** 5.11b */ + | "511c" /** 5.11c */ + | "511d" /** 5.11d */ + | "512" /** 5.12 */ + | "512a" /** 5.12a */ + | "512b" /** 5.12b */ + | "512c" /** 5.12c */ + | "512d" /** 5.12d */ + | "513" /** 5.13 */ + | "513a" /** 5.13a */ + | "513b" /** 5.13b */ + | "513c" /** 5.13c */ + | "513d" /** 5.13d */ + | "514" /** 5.14 */ + | "514a" /** 5.14a */ + | "514b" /** 5.14b */ + | "514c" /** 5.14c */ + | "514d" /** 5.14d */ + | "515" /** 5.15 */ + | "515a" /** 5.15a */ + | "515b" /** 5.15b */ + | "515c" /** 5.15c */ + | "515d" /** 5.15d */ + | "51Minus" /** 5.1- */ + | "51Plus" /** 5.1+ */ + | "52Minus" /** 5.2- */ + | "52Plus" /** 5.2+ */ + | "53Minus" /** 5.3- */ + | "53Plus" /** 5.3+ */ + | "54Minus" /** 5.4- */ + | "54Plus" /** 5.4+ */ + | "55Minus" /** 5.5- */ + | "55Plus" /** 5.5+ */ + | "56Minus" /** 5.6- */ + | "56Plus" /** 5.6+ */ + | "57Minus" /** 5.7- */ + | "57Plus" /** 5.7+ */ + | "58Minus" /** 5.8- */ + | "58Plus" /** 5.8+ */ + | "59Minus" /** 5.9- */ + | "59Plus" /** 5.9+ */ + | "510Minus" /** 5.10- */ + | "510Plus" /** 5.10+ */ + | "511Minus" /** 5.11- */ + | "511Plus" /** 5.11+ */ + | "512Minus" /** 5.12- */ + | "512Plus" /** 5.12+ */ + | "513Minus" /** 5.13- */ + | "513Plus" /** 5.13+ */ + | "514Minus" /** 5.14- */ + | "514Plus" /** 5.14+ */ + | "515Minus" /** 5.15- */ + | "515Plus" /** 5.15+ */; + + export type UiaaGradingScale = number + | "i" /** I */ + | "iI" /** II */ + | "iII" /** III */ + | "iVMinus" /** IV- */ + | "iV" /** IV */ + | "iVPlus" /** IV+ */ + | "vMinus" /** V- */ + | "v" /** V */ + | "vPlus" /** V+ */ + | "vIMinus" /** VI- */ + | "vI" /** VI */ + | "vIPlus" /** VI+ */ + | "vIIMinus" /** VII- */ + | "vII" /** VII */ + | "vIIPlus" /** VII+ */ + | "vIIIMinus" /** VIII- */ + | "vIII" /** VIII */ + | "vIIIPlus" /** VIII+ */ + | "iXMinus" /** IX- */ + | "iX" /** IX */ + | "iXPlus" /** IX+ */ + | "xMinus" /** X- */ + | "x" /** X */ + | "xPlus" /** X+ */ + | "xIMinus" /** XI- */ + | "xI" /** XI */ + | "xIPlus" /** XI+ */ + | "xIIMinus" /** XII- */; + + export type FrenchGradingScale = number + | "1" /** 1 */ + | "2" /** 2 */ + | "3" /** 3 */ + | "4a" /** 4a */ + | "4b" /** 4b */ + | "4c" /** 4c */ + | "5a" /** 5a */ + | "5b" /** 5b */ + | "5c" /** 5c */ + | "6a" /** 6a */ + | "6aPlus" /** 6a+ */ + | "6b" /** 6b */ + | "6bPlus" /** 6b+ */ + | "6c" /** 6c */ + | "6cPlus" /** 6c+ */ + | "7a" /** 7a */ + | "7aPlus" /** 7a+ */ + | "7b" /** 7b */ + | "7bPlus" /** 7b+ */ + | "7c" /** 7c */ + | "7cPlus" /** 7c+ */ + | "8a" /** 8a */ + | "8aPlus" /** 8a+ */ + | "8b" /** 8b */ + | "8bPlus" /** 8b+ */ + | "8c" /** 8c */ + | "8cPlus" /** 8c+ */ + | "9a" /** 9a */ + | "9aPlus" /** 9a+ */ + | "9b" /** 9b */; + + export type BritishAdjectivalGradingScale = number + | "m" /** M */ + | "d" /** D */ + | "hD" /** HD */ + | "vD" /** VD */ + | "mS" /** MS */ + | "s" /** S */ + | "hS" /** HS */ + | "mVS" /** MVS */ + | "vS" /** VS */ + | "hVS" /** HVS */ + | "e1" /** E1 */ + | "e2" /** E2 */ + | "e3" /** E3 */ + | "e4" /** E4 */ + | "e5" /** E5 */ + | "e6" /** E6 */ + | "e7" /** E7 */ + | "e8" /** E8 */ + | "e9" /** E9 */ + | "e10" /** E10 */ + | "e11" /** E11 */; + + export type BritishTechnicalGradingScale = number + | "1" /** 1 */ + | "2" /** 2 */ + | "3" /** 3 */ + | "4a" /** 4a */ + | "4b" /** 4b */ + | "4c" /** 4c */ + | "5a" /** 5a */ + | "5b" /** 5b */ + | "5c" /** 5c */ + | "6a" /** 6a */ + | "6b" /** 6b */ + | "6c" /** 6c */ + | "7a" /** 7a */ + | "7b" /** 7b */ + | "7c" /** 7c */; + + export type EwbankGradingScale = number + | "4" /** 4 */ + | "5" /** 5 */ + | "6" /** 6 */ + | "7" /** 7 */ + | "8" /** 8 */ + | "9" /** 9 */ + | "10" /** 10 */ + | "11" /** 11 */ + | "12" /** 12 */ + | "13" /** 13 */ + | "14" /** 14 */ + | "15" /** 15 */ + | "16" /** 16 */ + | "17" /** 17 */ + | "18" /** 18 */ + | "19" /** 19 */ + | "20" /** 20 */ + | "21" /** 21 */ + | "22" /** 22 */ + | "23" /** 23 */ + | "24" /** 24 */ + | "25" /** 25 */ + | "26" /** 26 */ + | "27" /** 27 */ + | "28" /** 28 */ + | "29" /** 29 */ + | "30" /** 30 */ + | "31" /** 31 */ + | "32" /** 32 */ + | "33" /** 33 */ + | "34" /** 34 */ + | "35" /** 35 */ + | "36" /** 36 */ + | "37" /** 37 */ + | "38" /** 38 */; + + export type BrazilianGradingScale = number + | "2" /** 2 */ + | "3" /** 3 */ + | "3c" /** 3c */ + | "4" /** 4 */ + | "5a" /** 5a */ + | "5b" /** 5b */ + | "5c" /** 5c */ + | "6a" /** 6a */ + | "6b" /** 6b */ + | "6c" /** 6c */ + | "7a" /** 7a */ + | "7b" /** 7b */ + | "7c" /** 7c */ + | "8a" /** 8a */ + | "8b" /** 8b */ + | "8c" /** 8c */ + | "9a" /** 9a */ + | "9b" /** 9b */ + | "9c" /** 9c */ + | "10a" /** 10a */ + | "10b" /** 10b */ + | "10c" /** 10c */ + | "11a" /** 11a */ + | "11b" /** 11b */ + | "11c" /** 11c */ + | "12a" /** 12a */ + | "12b" /** 12b */; + + export type SaxonGradingScale = number + | "i" /** I */ + | "iI" /** II */ + | "iII" /** III */ + | "iV" /** IV */ + | "v" /** V */ + | "vI" /** VI */ + | "vIIA" /** VIIa */ + | "vIIB" /** VIIb */ + | "vIIC" /** VIIc */ + | "vIIIA" /** VIIIa */ + | "vIIIB" /** VIIIb */ + | "vIIIC" /** VIIIc */ + | "iXA" /** IXa */ + | "iXB" /** IXb */ + | "iXC" /** IXc */ + | "xA" /** Xa */ + | "xB" /** Xb */ + | "xC" /** Xc */ + | "xIA" /** XIa */ + | "xIB" /** XIb */ + | "xIC" /** XIc */ + | "xIIA" /** XIIa */ + | "xIIB" /** XIIb */ + | "xIIC" /** XIIc */; + + export type VerminGradingScale = number + | "vb" /** VB */ + | "v0" /** V0 */ + | "v1" /** V1 */ + | "v2" /** V2 */ + | "v3" /** V3 */ + | "v4" /** V4 */ + | "v5" /** V5 */ + | "v6" /** V6 */ + | "v7" /** V7 */ + | "v8" /** V8 */ + | "v9" /** V9 */ + | "v10" /** V10 */ + | "v11" /** V11 */ + | "v12" /** V12 */ + | "v13" /** V13 */ + | "v14" /** V14 */ + | "v15" /** V15 */ + | "v16" /** V16 */ + | "v17" /** V17 */; + + export type FontGradingScale = number + | "1" /** 1 */ + | "2" /** 2 */ + | "3" /** 3 */ + | "4" /** 4 */ + | "4Plus" /** 4+ */ + | "5" /** 5 */ + | "5Plus" /** 5+ */ + | "6a" /** 6A */ + | "6aPlus" /** 6A+ */ + | "6b" /** 6B */ + | "6bPlus" /** 6B+ */ + | "6c" /** 6C */ + | "6cPlus" /** 6C+ */ + | "7a" /** 7A */ + | "7aPlus" /** 7A+ */ + | "7b" /** 7B */ + | "7bPlus" /** 7B+ */ + | "7c" /** 7C */ + | "7cPlus" /** 7C+ */ + | "8a" /** 8A */ + | "8aPlus" /** 8A+ */ + | "8b" /** 8B */ + | "8bPlus" /** 8B+ */ + | "8c" /** 8C */ + | "8cPlus" /** 8C+ */ + | "9a" /** 9A */; + + export type DankyuGradingScale = number + | "7Kyuu" /** 7 kyuu */ + | "6Kyuu" /** 6 kyuu */ + | "5Kyuu" /** 5 kyuu */ + | "4Kyuu" /** 4 kyuu */ + | "3Kyuu" /** 3 kyuu */ + | "2Kyuu" /** 2 kyuu */ + | "1Kyuu" /** 1 kyuu */ + | "1Dan" /** 1 dan */ + | "2Dan" /** 2 dan */ + | "3Dan" /** 3 dan */ + | "4Dan" /** 4 dan */ + | "5Dan" /** 5 dan */; + + /** Use with indoor climbing activities only */ + export type SplitStatus = number + | "failure" + | "success" + | "climbAttempted" + | "climbCompleted"; + export type TapSensitivity = number | "high" | "medium" @@ -4886,6 +5238,24 @@ declare namespace Types { export type NoFlyTimeMode = number | "standard" /** Standard Diver Alert Network no-fly guidance */ | "flat24Hours" /** Flat 24 hour no-fly guidance */; + + export type DiveSectionType = number + | "ascent" + | "descent" + | "hang"; + + export type ApneaDiscipline = number + | "constantWeightWithFins" + | "constantWeightWithBifins" + | "constantWeightWithoutFins" + | "dynamicWithFins" + | "dynamicWithBifins" + | "dynamicWithoutFins" + | "freeImmersion" + | "noLimit" + | "speedEnduranceApnea" + | "staticApnea" + | "variableWeight"; } export default Types; diff --git a/src/types/utils.d.ts b/src/types/utils.d.ts index 7a7c2aa..6b0411e 100644 --- a/src/types/utils.d.ts +++ b/src/types/utils.d.ts @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/utils-hr-mesg.js b/src/utils-hr-mesg.js index d021ed9..f5f92dd 100644 --- a/src/utils-hr-mesg.js +++ b/src/utils-hr-mesg.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/utils-internal.js b/src/utils-internal.js index f1a2d85..4147d1e 100644 --- a/src/utils-internal.js +++ b/src/utils-internal.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/utils-memo-glob.js b/src/utils-memo-glob.js index 3c248b0..3408af8 100644 --- a/src/utils-memo-glob.js +++ b/src/utils-memo-glob.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// import Profile from "./profile.js"; diff --git a/src/utils.js b/src/utils.js index 3b4704f..2b31d2e 100644 --- a/src/utils.js +++ b/src/utils.js @@ -5,8 +5,8 @@ // Transfer (FIT) Protocol License. ///////////////////////////////////////////////////////////////////////////////////////////// // ****WARNING**** This file is auto-generated! Do NOT edit this file. -// Profile Version = 21.214.0Release -// Tag = production/release/21.214.0-0-g47b86b1f +// Profile Version = 21.217.0Release +// Tag = production/release/21.217.0-0-g248b1c46 ///////////////////////////////////////////////////////////////////////////////////////////// diff --git a/test/data/test-data.js b/test/data/test-data.js index ab4df3a..3a5d9e8 100644 --- a/test/data/test-data.js +++ b/test/data/test-data.js @@ -689,6 +689,15 @@ const workout800mRepeatsBigEndian = [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x67 ]; +const unknownFieldBeforeAccumulatedField = [ + 0x0E, 0x02, 0xDC, 0x52, 0x30, 0x00, 0x00, 0x00, 0x2E, 0x46, 0x49, 0x54, + 0x1E, 0x1C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x02, 0x01, + 0x02, 0x84, 0x04, 0x04, 0x86, 0x00, 0x04, 0x01, 0x00, 0x4E, 0x07, 0xEA, + 0x44, 0x41, 0x00, 0x00, 0x84, 0x00, 0x03, 0xFD, 0x04, 0x86, 0xC8, 0x01, + 0x02, 0x09, 0x04, 0x86, 0x01, 0x60, 0x07, 0xEA, 0x44, 0x07, 0x00, 0x28, + 0x00, 0x00, 0x7F, 0xF8 +]; + export default { fitFileShort, fitFileShortWithWrongFieldDefSize, @@ -713,5 +722,6 @@ export default { fitFileUndefinedFieldArray, gearChangeData, workout800mRepeatsLittleEndian, - workout800mRepeatsBigEndian + workout800mRepeatsBigEndian, + unknownFieldBeforeAccumulatedField }; \ No newline at end of file diff --git a/test/decoder.test.js b/test/decoder.test.js index d639159..31a9687 100644 --- a/test/decoder.test.js +++ b/test/decoder.test.js @@ -737,6 +737,14 @@ describe("Decoder Tests", () => { expect(errors.length).toBe(0); }); + + test("When decoding a file with an unknown field before an accumulated field with the includeUnknownData flag set to true", () => { + const stream = Stream.fromByteArray(Data.unknownFieldBeforeAccumulatedField); + const decode = new Decoder(stream); + const { messages, errors } = decode.read({ includeUnknownData: true }); + + expect(errors.length).toBe(0); + }); }); describe("Decode Legacy Array Mode", () => { diff --git a/test/types.test-d.ts b/test/types.test-d.ts index a15647b..be335d3 100644 --- a/test/types.test-d.ts +++ b/test/types.test-d.ts @@ -8,7 +8,7 @@ import { expectTypeOf, test, expect, describe } from "vitest"; -import * as FIT from "../src/index"; +import * as FIT from "../src/index.js"; describe("Decoder Type Tests", () => { test("Decoder Constructor", () => {