Bug: range of average cadence is half of the range of cadence

Former Member
Former Member
I noticed this a while ago and it's come up again while i work on my data field.

The cadence data value is in the correct range (e.g. 160-200), however average cadence range is half this (e.g. 80-100). For example, if my current cadence is 172 and average is 170, what's shown on the watch is 172 (correct) and 85 (half of what is should be). Someone forgot to put a "*2.0" somewhere in the firmware for the latter.

True on my 235 and 735XT at least. Can this be reported as a bug and fixed please?
  • It's been this way for 7+ years, so I doubt a fix is coming.  It would actually break a bunch of apps that have work-arounds if this was fixed.

    I first saw this with walking and hiking in 2015 and have a work around in the code.. (I double the value based on the sport)

    So will Garmin at least provide a description of which Activity does what?  Do you mind providing the example code you used to workaround this per Activity?  What Activity does what?

  • Like I said, it's just doubling a value based on the sport.  This is from a device app where the sport is known (walking or hiking):

    if(recordTypes[recordType][0]==Record.SPORT_HIKING) {
    	lastCadence=(actInfo.currentCadence*2).format("%d")+" spm";
    } else {
    	lastCadence=(actInfo.currentCadence).format("%d")+" spm";
    }

    in the case of maxCadence, I double the value for both walking and hiking:

    lastMaxCadence=(actInfo.maxCadence*2).format("%d")+" spm";

  • Like I said, it's just doubling a value based on the sport.  This is from a device app where the sport is known (walking or hiking):

    Fullscreen
    1
    2
    3
    4
    5
    if(recordTypes[recordType][0]==Record.SPORT_HIKING) {
    lastCadence=(actInfo.currentCadence*2).format("%d")+" spm";
    } else {
    lastCadence=(actInfo.currentCadence).format("%d")+" spm";
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    in the case of maxCadence, I double the value for both walking and hiking:

    lastMaxCadence=(actInfo.maxCadence*2).format("%d")+" spm";

    I am not recording anything, mine is just a data field.  Thanks anyway.

  • Your DF is being used in a native activity that is recording, so there is a SPORT_*, but from a DF you can't tell what that is.

    You can add a setting to say if a value should be doubled or not, or don't display a value and let the user use a native if they want to see it.

    There's no list, and even if there was, it wouldn't be of much use in a DF where you don't know what the sport is.

  • There's no list, and even if there was, it wouldn't be of much use in a DF where you don't know what the sport is.

    Just found this:

    Toybox.Activity.getProfileInfo() as Activity.ProfileInfo sport member variable

    https://developer.garmin.com/connect-iq/api-docs/Toybox/Activity/ProfileInfo.html#sport-var

    Which looks like could be used.  But only from API 3.2.0, which would remove some of my users. HeHo

  • Yes, I missed that, but only since 3.2.0 which does eliminate some older devices.  By using your own app setting for "double or not". it will work on everything.

  • Yes, I missed that, but only since 3.2.0 which does eliminate some older devices.  By using your own app setting for "double or not". it will work on everything.

    Not the best user experience however.

  • As the current is good maybe it's possible to count correct average

    sumOfcurent += current;

    sum(sumOfcurent)/numOfReadings;

    sum(sumOfcurent)/numOfSeconds;

    ...

    Display a few values in beta version and find good formula to count a correct value. 

  • As the current is good maybe it's possible to count correct average

    sumOfcurent += current;

    sum(sumOfcurent)/numOfReadings;

    sum(sumOfcurent)/numOfSeconds;

    ...

    Display a few values in beta version and find good formula to count a correct value. 

    Yes makes much more sense to do it yourself.