The FIT format is the most feature-rich format that can be exported from Garmin Connect.
This document describes some of the items which are currently available, and possibilities for the future (e.g. accuracy estimates).
Only a few of the sports in Toybox.Activity are suitable for speed sailing apps.
Name | Value |
---|---|
SPORT_GENERIC | 0 |
SPORT_WINDSURFING | 43 |
SPORT_KITESURFING | 44 |
Note: The sport used for the activity recording is automatically saved to the FIT and it will persist, even if the activity type is subsequently changed in Garmin Connect.
The file ID includes the basic watch information.
Field | Value | Description |
---|---|---|
manufacturer | 1 | Garmin |
product | 4375 | Fenix 7 Pro |
serial number | 3500001234 |
The firmware and GNSS version could prove to useful in the future, should any bad firmware be released.
Name | Criteria |
---|---|
Firmware version | device_type is empty, or device_index == creator |
GNSS version | device_type == 0 |
The application details from the developer_data_id record can be used to identify the application downloaded from the Connect IQ Store, but not side-loaded betas.
Name | Example | Descrption |
---|---|---|
application_id | 9567700b-6587-44be-9708-879bfc844791 | UID for application on the Connect IQ Store |
application_version | 120 | Version number |
Applications such as APPro may record some human-readable information that relates to the session.
Name | Example |
---|---|
craft | wingfoil |
app_name | APPro |
app_ver | 4.07 |
gnss_config | 6 = all systems + multi-band |
FIT files contain a field called speed which is a 16-bit integer. This represents the speed over ground (SOG) in mm/s, so the max speed that can be represented is 65.535 m/s. There is an enhanced_speed field which is a 32-bit integer, which has a limit of slightly over 4 billion mm/s. There is no difference between the two fields when windsurfing. There are no change to filters, or anything special about enhanced_speed.
Likewise the regular altitude field is 16-bits and limited to 6553.5 m (6.5 km). This would be too small for people like Felix Baumgartner who jumped from a balloon at 39 km, but enhanced_altitude is 32-bits and overcomes the limits of the 16-bit altitude.
Connect IQ apps such as APPro are able to check the GNSS fix quality and record it in the FIT file, accompanying the latitude + longitude + speed data.
Name | Value | Description | Sats | HDOP |
---|---|---|---|---|
QUALITY_NOT_AVAILABLE | 0 | GPS is not available | ||
QUALITY_LAST_KNOWN | 1 | The Location is based on the last known GPS fix. | ||
QUALITY_POOR | 2 | The Location was calculated with a poor GPS fix. Only a 2-D GPS fix is available, likely due to a limited number of tracked satellites. | 3 | |
QUALITY_USABLE | 3 | The Location was calculated with a usable GPS fix. A 3-D GPS fix is available, with marginal HDOP (horizontal dilution of precision) | >= 4 | > 3.0 |
QUALITY_GOOD | 4 | The Location was calculated with a good GPS fix. A 3-D GPS fix is available, with good-to-excellent HDOP (horizontal dilution of precision). | >= 4 | <= 3.0 |
Accuracy estimates are available in the Android Location class and Apple CLLocation class. These estimates relate to the position and speed accuracy at the 68th percentile confidence level. Full details of the accuracy estimates provided by Android and Apple can be found on a page detailing both APIs.
The Airoha AG3335M chipset is capable of providing these metrics but they are not currently exposed via the Garmin API. It is highly desirable for the accuracy estimates from the Airoha chipset to be exposed via the Garmin Toybox.Position module in a future API.
I was digging into Garmin’s FIT SDK recently and discovered that a field called GPS accuracy is already present. The units are meters, so it will almost certainly be positional accuracy (aka hAcc). I know from my previous investigations that hAcc issues are a decent proxy for sAcc issues. This applies to all of the GNSS chipsets that I’ve studied and tested; e.g. SiRF, UBX, Broadcom, Qualcomm, Samsung.
The next question is whether Garmin have some way that we can force watches to record the GPS accuracy (aka hAcc) in FIT files. Someone in Garmin seems to have developed this capability already, based on what I can see in their FIT SDK. However, I can find nothing related in the Connect IQ developer documentation. Perhaps it is something that can be achieved with some kind of debug build?
There are some undocumented records called GPS events, but I have decoded and documented the content.
This looks interesting and may relate to the time offsets, but I have yet to investigate.
This includes the battery level during the session and may be interesting, should power saving kick in, or suchlike.