In the FIT files which I download from Garmin Connect which are generated by either my Epix gen2 or my Fenix 6 watch, there are 11 of 30 message types which do not have a mesg_num defined in Profile.xlxs. Does anyone know where these are defined and how you could generate an SDK which actually works without a full definition?
For my purposes, I don't actually need to decode and encode the unknown fields because I only want to fix some mesg_num = record = 20 messages.
However, fields that will not decode cannot be re encoded into an output file and Garmin import throws an error message if you try to upload a FIT file that is missing these undefined fields.
On the other hand, Strava doesn't care that these fields are missing.
I noticed that the Muktihari's Golang FIT SDK provides a raw decode encode facility which would allow passthrough of unknown fields.
However, I'd like to use the Garmin C++ FIT SDK if it were possible.
Also, the Goland SDK notes in its profile doc that:
"supplementary items related to "Global Profile" that are not
declared in the Profile.xlsx itself but are provided by Garmin
or its affiliates website, such as common file types,
are added manually."
I couldn't find these manual additions.
As an example of the astounding number of undefined messages in a file generated by my Garmin watch see below:
- Undocumented FIT_MESG_NUM according to FIT File Viewer
- In a run activity file from 2/28/2024
- Out of 30 message types 11 are undocumented
- mesg 288 3 rows of timestamps + 3 integer fields
- mesg 327 4 rows of timestamps + 6 integer fields
- "GPS Events" 34 rows of timestamps + event type + mode
- mesg 147 3 rows of 11 fields
- mesg 79 1 row of timestamp + 41 fields
- "Other Settings" 1 row of 50 fields
- mesg 325 104 rows of timestamps + 6 integer fields
- mesg 104 5 rows of timestamps + 4 integer fields
- mesg 233 196 rows of 1 field
- mesg 140 1 row of timestamp + 65 fields
- mesg 133 3 rows of timestamps + 6 fields