Ticket Created
over 2 years ago

WERETECH-12749

feature-request: enable CIQ apps to indicate no-data/missing-data/incorrect-data in a Fit field.

Native apps have a way to indicate missing/no/invalid data in the FIT data file. For native apps' data GCM and web both are able to display correctly the gaps. For CIQ apps we currently only have the choice to send some data (like 0) that is "incorrectly" rendered on the graphs.

Please add a way for CIQ apps to do the same. Some possible solutions:

- enable Toybox.FitContributor.Field.setData(null) also for non nullable DATA_TYPE_-s.

- add a new parameter to Toybox/WatchUi/DataField.createField to indicate that setData should accept null.

- add a new parameter to Toybox/WatchUi/DataField.createField to indicate what value should be treated as missing/invalid. So for example for HR related data we could set ActivityMonitor.INVALID_HR_SAMPLE as the invalid value and use that to indicate that for a certain period of time we didn't have valid data.

The problem is well documented in https://forums.garmin.com/developer/connect-iq/f/discussion/7509/fitcontributor-field-setdata-should-accept-null-as-a-value/

  • after reading the FIT protocol docs, I think there is a way for CIQ apps to write an invalid value to a FIT field.

    The key is in the protocol documentation itself:

    [https://developer.garmin.com/fit/protocol/]

    For example, for a uint8 field, I think you would write 0xFF for an invalid value. This might explain a bug that came up a while ago where the API was returning 255 for heartrate instead of null, when no HR was available.

    Sure wish Garmin could've told us this. Guess that's what I get for whining and complaining all the time. The funny thing is I barely care anymore lol

  • native app's native field can have gaps:

    but CIQ app's field can't, they have to send some data, i.e 0:

    or if they don't send 0 then we'll see horizontal lines which are even worse: