Activity::Info gear information missing on Forerunner

Former Member
Former Member
I'm attempting to access frontDerailleurIndex, rearDerailleurIndex, and other such gear related values from the Activity::Info object.

I can get this data on the Edge family of devices (from my paired Di2 system), and within the simulator.

I *cannot* access this data on the Forerunner family of devices, neither on an actual device or the simulator.

The documentation for this object and these data points (e.g. https://developer.garmin.com/downloads/connect-iq/monkey-c/doc/Toybox/Activity/Info.html#frontDerailleurIndex-instance_method) notes no access or device restrictions, suggesting this is a bug.

You can easily recreate this by using the following compute(info) method, noting the that the values for frontDerailleurGear and rearDerailleurGear are -1 (meaning null) for the Forerunner devices, and valid/accurate on Edge.

function compute(info) {

var frontDerailleurIndex = -1;
if(info has :frontDerailleurIndex) {
frontDerailleurIndex = info.frontDerailleurIndex;
}
Sys.println("Front Derailleur: " + frontDerailleurIndex);

var rearDerailleurIndex = -1;
if(info has :rearDerailleurIndex) {
rearDerailleurIndex = info.rearDerailleurIndex;
}
Sys.println("Rear Derailleur: " + rearDerailleurIndex);

}
  • To be clear, your code is checking to see if the Activity.Info type has members named frontDerailleurIndex and rearDerailleurIndex, and the runtime environment is returning false. This is a pretty good hint that the feature is not supported on the given device.

    It is my understanding that the shifting data is only supposed to be available to the edge series of devices, so I wouldn't expect to see it on the forerunner, vivoactive, or fenix devices.

    The simulator has been improved recently to more accurately emulate actual devices. There could be some inconsistencies, but as a general rule, if a feature isn't available on a device in the simulator, it should not be available on a real device. It is possible that this effort would result in removal of the 'supported devices' comment associated with every function in the documentation... These blocks have been problematic as they don't always get updated as new device support becomes available.

    Given that you're seeing this in both the simulator and devices, I'm led to believe that this is an error in the documentation. In that case it might make sense for this post to be moved to the ConnectIQ Bugs forum area.

    Travis
  • Former Member
    Former Member
    thank you for the reply, but...

    Your post comes across as insinuating that I should poke around at runtime tests to determine feature support, versus using or trusting the documentation. Documentation is part of your product. Forcing developers to poke and prod to determine what may work is a terrible experience. This isn't the first time I've run across areas of the Connect IQ documentation that is incorrect. Something is broken with your process. Developers make their plans, architect their apps and size their investment based on your documentation. Consider this a plea to fix whatever is broken internally where your documentation is treated as an after thought, and where bugs within are acceptable.
  • Former Member
    Former Member
    I see the Garmin IQ Bug section now, and will use it in the future for similar reports. Thank you for bringing it to my attention.
  • Your post comes across as insinuating that I should poke around at runtime tests to determine feature support

    Yes. I'm a developer just like you, and I know that it is easy for the documentation to get out-of-date. This is how I find answers to questions I have about the system.

    Documentation is part of your product.

    Yes, it is part of their product. While it may sound like it by the wording in my responses, I'm not a Garmin employee. I'm just a software guy who likes to tinker.

    Travis
  • Former Member
    Former Member
    understood. your response came across as more cogent.
  • It's easy to ID the Garmin CIQ folks here - their handles all end with ".ConnectIQ".

    (Brandon, Coleman, Brian for example)
  • Former Member
    Former Member
    ;) thank y'all
  • Former Member
    Former Member
    When and why is data available in CIQ?

    For the Connect IQ team,
    The Forerunner allows recording of Bike Activities, and connects to sensors like cadence, power and even my Di2 gear antenna. It displays the data from these sensors within Garmin data fields.

    So I presumed (perhaps incorrectly per this thread) that all bike sensor data would be available through CIQ to me as a developer in Activity::Info. Could you help me understand when your team chooses which devices get access to sensor data? It would be helpful to know what data makes the cut and why.

    Thanks as always,
    Doug
  • Former Member
    Former Member
    This type of data should be exposed if the product supports it. Unfortunately, there are too many products for the ConnectIQ team to keep tabs on exactly which features are supported by each one, so we rely on the product teams to enable the features they are capable of supporting. We try to communicate all new features to the device teams so they can do this, but this feature may not have been properly advertised because it was specifically requested by the Edge products.

    Beyond this, there are some features that may not make it back into products running the 1.x VM because their resources have become very tight. We have ported a limited number of features back to that VM, but it is unlikely any that aren't there today will be added.

    Regarding your Di2 data, the shifting data in the Activity module should be available in any 2.x device that supports the sensors. We have identified the Forerunner 735 as a device that should have integrated this API, but has not, and hope to have it added when they do their next release.

    Also, we found that the shifting APIs are tagged with the 1.2.10 version despite the fact that they do not exist in the 1.x VM. This was a mistake made when the 1.2.10 SDK was released, which was a beta SDK showing off 2.x features. We are correcting this API version in the documentation.
  • Former Member
    Former Member
    Thank you

    That was my reasoning from afar. Thank so much for the detailed reply.

    I'll be on the lookout for future updates which include support to keep pushing forward on my Forerunner project.