Is there any documentation on what fields are mandatory for various kinds of messages? Especially so for record/20, since it seems to collect most kinds of data in one place.
Is the only mandatory field timestamp/253?
I'm (re-)writing a parsing library in Rust (not yet on crates.io) that started out specific to VIRB Ultra 30 when it comes to post-processing, since I needed to sync location with video for VIRBs for a tool we're using (fairly crude code in there right now, that's currently being cleaned up considerably + adding support for that other action camera brand). However I'm contemplating a full representation of at least record/20 as-per Profile.xlsx. My current record/20 struct only covers location data to generate KML from VIRBs or watches (for those that log location to record/20). This is mostly for deciding how to best represent optional fields since it seems record/20 have a lot of those.
This is basically a two-step parse, where the first step just gets the raw values for any FIT-file, with support for custom developer data, to be interpreted further in the second step (in my case location + time only).