I have one minor question. In the FIT File Types Description, Rev 2.1 section 15.2, the storage of accumulated values time ranges is described as the difference from the previous message.
This is specifically listed in bold in section 15.5.1:
"As a result, a starting point shall always be logged."
It is also recommended to log starting points to narrow the duration for monitoring reports, in section 15.5.2:
"This loss of resolution can be prevented by recording a starting reference point as shown in Figure 15-6."
The reason I bring these points up is that neither the sample monitoring file included in the SDK, nor the files exported by Garmin Connect from my Vivosmart HR, contain these reference points.
I fully expect I'll have to kludge it by making assumptions directly against the specification ("no assumptions about the message frequency should be made"), but do you have any advice about which ones?
I believe my device in particular always resets steps at midnight, always switches files then, and does store initial values if non-zero when it switches files. In addition, I suspect the actual interval can be traced back not to the matching activity type but the previous steps report.
Tracing the time back to monitoring events in general is not the right way to go, as I frequently have long intervals between step reports with more frequent heart rate reports between.