Does CIQ 2.1 support override FIT internal Power related values using fitContribution

Former Member
Former Member
Dear Guys,

I have developed a Data Fields for Edge Device, and I will use GenericChannel connect to Power Meter directly to read more data like Power Balance/Torque Effectiveness/Pedal Smoothness/Power Phase values.

But due to limitation of ANT protocol, recently only one connection between Edge device and Power Meter allowed.
Which means, if I want to use my own connection to read extra values, I need to disabled Edge device internal PM pairing.
But do like that way, the recorded FIT file will NOT included ANY power related values.

The limitation described in below thread:
https://forums.garmin.com/showthread.php?357647-ANT-channel-for-PowerMeter-CANNOT-work-with-internal-PowerMeter-the-same-time&p=885169#post885169



Recently, I saw CIQ 2.1 can support "Add" user defined values into output FIT file directly.
As the demo description, yes, I can achieve my goal using some unique name like "NewPower".

But I want to know, is that possible to using the FIT defined internal name to do the things?

For example, in FIT definiation,

<strings>
<string id="power_label">Power</string>
<string id="power_graph_label">Power</string>
<string id="power_units">w</string>
</strings>
<fitContributions>
<fitField id="0" displayInChart="true" sortOrder = "0" precision="2"
chartTitle="@Strings.power_graph_label" dataLabel="@Strings.power_label"
unitLabel="@Strings.power_units" fillColor="#FFFF00" />
</fitContributions>
  • Former Member
    Former Member
    You will not be able to override the native fields that are recorded to the file. You can use any name you would like for the Developer Data you record, but naming the data "Power" will not override the internal power field. This data will still be added as extended developer data.

    You can specify which native field your data is compatible with the ":nativeNum" parameter when setting up your field. This also will not cause your data to replace the internal data, but it will tag it with the FIT SDK enumeration you provide.

    The :nativeNum parameter has been added to allow overriding data at the file processing level. There should be APIs added to the FIT SDK that will allow applications decoding the files to get all available sources of data including the Developer Data. This means if your data is tagged with the correct FIT field enumeration, and recorded with the correct data format, your data would be provided in addition to the internal power values if the file is decoded with these new APIs.

    Garmin Connect does not have any short term plans to override data in this way, and will continue to show Developer Data alongside the native data, but other services may choose to add the ability to override data.
  • sorry Brian,how can I show Developer Data alongside the native data in Garmin Connect?..actually I didn't find any information about that.
    Regards.
  • Former Member
    Former Member
    My knowledge of the Fit Contributor attributes is not extremely strong. The MoxyDataField sample in the SDK uses the new module. I think the developer data should appear below the native data on Garmin Connect unless the data is specified as hidden in the fitContributions resource definition.
  • Thank for the answer Brian,I checked the example but it's not using the FitContributor module yet.
    It's really strange that it isn't present a valid example in the SDK for a such major feature of the new SDK.
  • I'm seeing it in connectiq-sdk-win-2.1.2/samples/MoxyDataField/source/MO2FitContributions.mc. You either don't have a recent version of the SDK or you're looking in the wrong folder.
  • Thank you Travis,I had an old version of the project without the FitContributions part and probably because of this Eclipse didn't import the new version when I upgraded the SDK.

    For me it would be better to have also an example using FitContributions in an App rather than a Datafield in order to better understand every parts.
  • There is no substantive difference between an app and a data field when it comes to the FitContributor API. An app needs to manage an ActivityRecording.Session object, but this is completely independent of the FitContributor stuff.

    Travis
  • Thank you for the information Travis.
    I'm struggling with this FitContributions....actually I modified my App to add two extra fields to the fit file generated and it looks like if it's working...
    I attach the two CSV of the decoded FitFile generated from a Fenix 3(not simulator) where are clearly visible the session.developer extra fields added.
    I also modified the resources file off the app in order to manage the two fit contributions with this code:<fitContributions>
    <fitField id="0"
    displayInActivitySummary="true"
    sortOrder = "0"
    precision="1"
    dataLabel="@Strings.jumps_total_label"
    unitLabel="@Strings.jumps_units" />

    <fitField id="1"
    displayInChart="false"
    sortOrder = "1"
    precision="1"
    displayInActivityLaps="true"
    dataLabel="@Strings.jumps_lap_label"
    unitLabel="@Strings.jumps_units" />
    </fitContributions>

    <strings>
    <string id="jumps_total_label">Total Jumps</string>
    <string id="jumps_lap_label">Lap Jumps</string>
    <string id="jumps_units">jumps</string>
    </strings>


    but the two fields are not shown in Garmin Connect and what is worse is that if I open the lap/session general tab of the activity in Garmin Connect Mobile make the app crashing.
    I'm stuck with this because I don't understand if I'm doing wrong or if I'm missing something.
    Thank in advance for any help.