Types sheet in Profile.xlsx needs some explanation

I need some clarification regarding the Types sheet in Profile.xlsx. It may be documented somewhere, but I haven’t been able to find it. Two things are unclear to me.

First, I noticed that of the roughly 200 documented Types, only about 140 are actually used in the Messages. For example, "language_bits_1" through "language_bits_4" do not appear in any Message. The same applies to "sport_bits_1" through "sport_bits_6". What is the purpose of these unused Types?

Second, the use of hexadecimal values in the Value column is not always explained. In some cases it’s clear, such as in the comments for "file.mfg_range_min" and "file.mfg_range_max". But for the type "file_flags", it could be interpreted that the bits can be used cumulatively. In that case, 0x0E would correspond to readable & writable & erasable. And maybe other uses of hexadecimal values are applicable elsewhere.

Can someone clarify this, or provide a link to existing documentation?
Many thanks!

  • The sport and language bits types are used in the CapabilitiesMesg's sports and languages arrays respectively. For Activity FIT files, the types "sport" and "sub_sport" are what are used to classify an activity's sport(s). Other types may be publicly documented but used in undocumented messages, files, etc.

    Regarding the second point, "file_flags" is a "uint8z" type, meaning that it is a uint8 where "0" is the invalid value, rather than 255. Almost all "z" types in the SDK are used as bitmasks for bitfields. so it is exactly the case where a value of 0x0E would correspond to readable, writable, and erasable. Another example of a "z" type is workout_capabilities, which is a uint32z bitmask type used in a WorkoutMesg's capabilities bitfield.

  • Thank you Eli, this helps. I have a follow-up question that focuses on the calculation of the left_right_balance. Profile says:

    right 0x80 data corresponds to right if set, otherwise unknown

    Is it correct that if NOT set, you can NOT conclude that data corresponds to left? You simply don't know then if the balance is 53% / 47% or 47% / 53% in that situation.