The FIT SDK is available for download at https://developer.garmin.com/fit/download/
21.158
In this release:
-
Updated the comments for messages and fields used by the Garmin Health SDK
-
Java SDK
- Added a new Decoder class. The new Decoder is constructed using a byte[] array instead of an InputStream, allowing for random access to the data which results in slightly faster decoding. Also allowing for the isFIT() and checkFileIntegrity() functions to be called without having to close and reopen the stream afterwards. The new Decoder also handles chained FIT files without having to manually call nextFile(). The byte[] array also provides a better interface when the file data is coming from an API call rather than from disk. See the example program for usage: https://github.com/garmin/fit-java-sdk/blob/main/src/main/com/garmin/fit/examples/DecoderExample.java
-
JavaScript SDK
- Improved the performance of the Decoder by reducing unnecessary data copying in the Stream class.
- Removed an unnecessary call to stream.reset() in the Decoder read() function
- Added decode modes to skip over the file header while decoding or decode a file without a header
-
Python SDK
- Improved exception handling to no longer consume KeyboardInterrupt or SystemExit exceptions
- Removed an unnecessary call to stream.reset() in the Decoder read() function.
- Added decode modes to skip over the file header while decoding or decode a file without a header
-
C SDK
- Prevent infinite loop in Fit_GetMesgDef(), preemptively before anyone customizes the C SDK with more that 255 total messages through the config.csv file
-
Added new manufacturer ids
- Abawo
- Bafang Electric (Suzhou) Co.,Ltd.
- EO Labs (Swimbetter)
- MyWhoosh Technology Services LLC
- RAVEMEN
-
Added new Garmin product ids
- indexSmartScale2
- edge1050
- descentT2
- lilyAthlete aka the Lily 2 Active
- fenix8Solar
- fenix8SolarLarge
- fenix8Small
- fenix8
- enduro3
- fenixE
-
Added new autolap_trigger mode
- auto_select
-
Updated workout message
- Made the wkt_description field public
-
Updated chrono_shot_session message
- standard_deviation
21.141
- Workout Feel and Workout RPE have been added to the Session message.
- Added new manufacturer ids
- absolute_cycling
- Added new Garmin product ids
- fr165
- fr165Music
- Added new messages
- skin_temp_overnight
- Updated messages
- Workout Feel and Workout RPE have been added to the Session message.
- Updated types
- Update segment_leaderboard_type to match Strava Live Segments API
21.133
In this release:
- C++ SDK
- Fixed issue with zero length developer data fields
Profile additions in this release:
- Added new manufacturer ids
-
ictrainer
-
- Added new Garmin product ids
-
hrm_fit
- hrm_fit_single_byte_product_id
- descentMk3
- descentMk3i
-
lily2
-
- Added new sports
- baseball
- disc_golf
- cricket
- rugby
- hockey
- lacrosse
- volleyball
- mixed_martial_arts
- snorkeling
- dance
- Added new sub-sports
-
squash
- badminton
- racquetball
- table_tennis
-
- Added new messages
-
chrono_shot_sessionchrono_shot_data
-
- Added new types
-
projectile_type - used with chrono_shot messages
-
21.126
Since the last release:
- The FIT C# SDK is now available from NuGet
- The FIT Java SDK is now available from Maven Central
- The JavaScript SDK package name has changed
In this release:
- Python SDK
- Fixed issue decoding messages with no fields
- C++ SDK
- Fixed issue with encoding strings in developer fields
- Objective-C SDK
- Added methods to encode & decode strings in developer fields
Profile additions in this release:
- Added new manufacturer ids
- laisi
- myzone
- aero_sensor
- nike
- magicshine
- Added new Garmin product ids
- varia_rct15
- venu3
- venu3s
- fenix_7s_pro_solar
- fenix_7x_pro_solar
- vivoactive5
- marq_gen2_commander
- d2_mach1_pro
- Added new sports
- wheelchair_push_walk
- wheelchair_push_run
- meditation,
- Added new sub-sports
- indoor_wheelchair_walk
- indoor_wheelchair_run
- indoor_hand_cycling
- Added new messages
- split_summary
- Updated split message with
- message_index
- avg_speed
- total_ascent
- total_descent
- start_position_tat
- start_position_long
- end_position_lat
- end_position_long
- max_speed
- avg_vert_speed
- end_time
- total_calories
- start_elevation
- total_moving_time
21.115
- C# SDK
- Added new FitListener and FitMessages classes. These classes provide generic message listeners and data models to decode any type of FIT file with a few lines of code. See the ActivityDecode recipe in the Cookbook class for usage.
- Added new manufacturer ids
- blackbird
- meilan_byte
- ezon
- spinning_mda
- hilldating
- Added new Garmin Product ids
- descent_t1
- gnss
- edge_540
- edge_840
- approach_s70
- fr265_large
- fr265_small
- epix_gen2_pro_42
- epix_gen2_pro_47
- epix_gen2_pro_51
- fr965
- fenix7_pro_solar
- instinct_2x
- descent_t2
- Added new sub-sports for flying sport type
- fly_canopy
- fly_paraglide
- fly_paramotor
- fly_pressurized
- fly_navigate
- fly_timer
- fly_altimeter
- fly_wx
- fly_vfr
- fly_ifr
- Added new messages
- monitoring_hr_data
- max_met_data
- spo2_data
- sleep_level
- beat_intervals
- respiration_rate
- sleep_assessment
- hrv_status_summary
- hrv_value
- Updated weight_scale with
- bmi
- Updated session message with
- sport profile name
- end_position_lat
- end_position_long
21.105
In this release:
- Added or extended messages and types related to the Descent series dive watches.
- Python SDK
- Fixed issue when the target of a component expansion was an enum field
- Improved handing for arrays of bytes, a field will only be marked as invalid if all the values in the array are invalid
- Bumped version to 21.107
- JavaScript SDK
- Fixed issue when the target of a component expansion was an enum field
- Improved handing for arrays of bytes, a field will only be marked as invalid if all the values in the array are invalid
- Bumped version to 21.107
- Objective-C SDK
- Bumped version to 21.107
Profile additions in this release:
- Added new sport type
- hiit
- Added new sub-sport types
- hiit
- amrap
- emom
- tabata
- Added new Garmin Product ids
- Fr35
- vivo_move_trend
- dive_settings message added fields
- timestamp
- travel_gas
- ccr_low_setpoint_switch_mode
- ccr_low_setpoint
- ccr_low_setpoint_depth
- ccr_high_setpoint_switch_mode
- ccr_high_setpoint
- ccr_high_setpoint_depth
- gas_consumption_display
- up_key_enabled
- dive_sounds
- last_stop_multiple
- no_fly_time_mode
- dive_alarm message added fields
- id
- popup_enabled
- trigger_on_descent
- trigger_on_ascent
- repeating
- speed
- dive_apnea_alarm message added fields
- message_index
- depth
- time
- enabled
- alarm_type
- sound
- dive_types
- id
- popup_enabled
- trigger_on_descent
- trigger_on_ascent
- repeating
- speed
- dive_gas message added feilds
- mode
- dive_summary message added fields
- avg_pressure_sac
- avg_volume_sac
- avg_rmv
- descent_time
- ascent_time
- tank_update message added fields
- timestamp
- sensor
- pressure
- tank_summary message added fields
- timestamp
- sensor
- start_pressure
- end_pressure
- volume_used
- session message added dive fields
- avg_depth
- max_depth
- surface_interval
- start_cns
- end_cns
- start_n2
- end_n2
- min_temperature
- o2_toxicity
- dive_number
- lap message added dive fields
- avg_depth
- max_depth
- min_temperature
- record message added dive fields
- air_time_remaining
- pressure_sac
- volume_sac
- rmv
- ascent_rate
- po2
- event enum added dive values
- dive_alert
- dive_gas_switched
- tank_pressure_reserve
- tank_pressure_critical
- tank_batter_low
- tank_pod_connected
- tank_pod_disconnected
- dive_alert enum added
- dive_alarm enum added
- ccr_setpoint_switch_mode enum added
- dive_gas_mode enum added
- gas_consumption_rate enum added
- no_fly_time enum added
21.101
- JavaScript SDK - major version bumped from 0 (beta) to 21 (released)
- Python SDK - major version bumped from 0 (beta) to 21 (released)
*** Moving forward the major and minor version of these SDKs will be in-sync with the other SDKs.
- Added new manufacturer ids
- LSEC - renamed from ISEC, which was a typo
- Shaynue
- Porsche EP
- Added new Garmin Product ids
- Marq Gen2 Aviator
- Marq Gen2 - all other variants
- Instinct 2 Crossover
- Added new sport types
- Racket
- Water Tubing
- Wakesurfing
- Added new sub-sport types
- Pickelball (used with Sport type Racket)
- Padel (used with Sport type Racket)
- Added new messages
- Time In Zone
- Split
- Added new types
- Split Type
- HR Zone Calc - Percent Lactate Threshold HR (LTHR) value
- Local Device Type - used with the Device Type field in the Device Info message
- BLE Device Type - used with the Device Type field in the Device Info message
- Added Respiration Fields to:
- Session Mesg
- Lap Mesg
- Length Mesg
- Record Mesg
- Added Enhanced Altitude Fields to
- Segment Point Mesg
- Segment Lap Mesg
*** "Enhanced" fields use a larger data type than their counter part field; 32 bits instead of 16 bits, or 16 bits instead of 8 bits. Data from the counterpart field is copied to the enhanced field during decoding, except for the C SDK. The enhanced fields should be used when present.
- New JavaScript SDK
- New Python SDK
- Added new Manufacturer Ids
- ISEC
- Lululemon Studio
- Added new Garmin Product ids
- Edge 1040
- Enduro2
- Venu Sq 2
- Venu Sq 2 Music
- ISEC
21.89
In this release:
- FIT CSV tool improvements
- Options were added to convert semicircles to decimal degrees, and to convert FIT date-times to ISO-8601. Decimal degrees and ISO-8601 values in the CSV file will also convert back to FIT.
See https://developer.garmin.com/fit/fitcsvtool/commandline/ for usage.- When using the -x option to print bytes as hex, 0x is appended to the value to allow the CSV file to be converted back to FIT.
- Improved error handling when decoding FIT files. If an exception occurs while decoding a FIT file, a CSV file containing the data up to the point of the corruption will now be written out. Use the -d option (enable debug output) to print the error to the terminal.
- General fixes for converting CSV files back to FIT.
- A new FIT Activity File Repair Tool was added to the Java SDK. The Activity Repair Tool can remedy the most common issues associated with corrupt or invalid FIT Activity files, so that the repaired file may be successfully uploaded to the desired fitness platform.
See https://developer.garmin.com/fit/cookbook/activity-file-repair-tool/ for usage.
- Options were added to convert semicircles to decimal degrees, and to convert FIT date-times to ISO-8601. Decimal degrees and ISO-8601 values in the CSV file will also convert back to FIT.
Profile additions in this release:
- Added new Manufacturer Ids
- Tag Heuer
- Keiser Fitness
- Fazua
- Oreka Training
- Added new Garmin Product ids
- Forerunner 255
- Forerunner 955
- Vívosmart 5
- HRM Pro Plus
- Tactix 7
- Edge Expore 2
- Added two dozen new Course Point Types
- Added secondary targets to Workout Step message
- Tag Heuer
21.78
In this release:
- The preexisting Objective-C SDK has been removed. It was replaced by new Objective-C SDK v21.67.
- The HR to Record Message plugin in the Java SDK has been updated to better handle heart rate values less than 60 bpm.
Profile additions in this release:
- Added new Manufacturer Ids
- Decathlon
- TQ Systems
- True Fitness
- RGT Cycling
- Vasa
- Race Republic
- Added new Garmin Product ids
- Instinct 2
- Fenix 7
- Epix Gen 2
- Descent G1
- Venu 2 Plus
- D2 Air X10
- Decathlon
21.67
This release includes a new Objective-C SDK that is compatible with Swift. Information on using this SDK can be found at https://developer.garmin.com/fit/example-projects/objc/. This will be the last release that contains the preexisting Objective-C SDK, found under the cpp folder, that is not compatible with Swift.
Profile additions in this release:
- Added new Manufacturer Ids
- GeoId
- Added new Garmin Product ids
- Forerunner 945 LTE
- Forerunner 55
- Added Sub-Sport Ids
- Breathing
- Ultra
- Indoor Climbing
- Bouldering
- Added ANT+ Device Type Id
- Shifting
- Dive Summary Message, added five new fields
- avg_ascent_rate
- avg_descent_rate
- max_ascent_rate
- max_descent_rate
- hang_time
21.60
- Added new Manufacturer Ids
- Shimano
- Coospo
- Syncros
- Added ~30 Garmin Product ids
- Venu 2
- Approach
- Backfilled missing product ids for previously released devices
- Added Sub-Sport Ids
- Sail-Race
- Java SDK
- Setting a string with a byte length greater than 254 bytes will now throw an exception. Previously a corrupt FIT file would be created.
- DateTime class now implements the Comparable interface.
- Added new FitDecoder, FitListener, and FitMessages classes. These classes work together to decode any type of FIT file with a few lines of code. See the FitDecoderExample class for usage.
- New Java Example apps that mimic the C# recipes. See https://developer.garmin.com/fit/example-projects/java/ for usage.
- Encode Activity
- Encode Course
- Encode Workout
- Shimano
21.47
- Added an operator=() method to the DeveloperFieldDefinition class in the C++ SDK. This is to prevent a crash when encoding FIT files with developer fields.
- Updated the example Encode project in the C++ SDK to provide a better example of how to use Developer Fields when using the C++ SDK.
- New ids where added to the manufacturer list
- SIGEYI
21.40
- Diving has been added to the Sport enum
- New devices have been added to the Garmin Products enum
- D2 Air
- Forerunner 745
- Forerunner 745 Asia
- Venu Square
- Venu Square Asia
- FIT SDK Cookbook
- The FIT SDK Cookbook contains examples of using the FIT SDK to solve real-world problems. There are recipes for encoding and decoding Activity, Workout, and Course files; and recipes that provide tips for working with the FIT SDK.
- For more information see https://developer.garmin.com/fit/cookbook/
- New devices have been added to the Garmin Products enum