symbol not found error; only on Edge 820 how to fix?

Just checking with ERA if there has been any error from my users.. and found 45 occurrence on the edge 820 device only.. I could not find anything wrong..

I hope any of the wizards from this forums may be able to help me identify what is the error, and how may I fix it. 

Same code is running in the edge 1030, 1040, 840, 540... even the 1000.. and they don't present this error that looks specific for the 820

Top Replies

All Replies

  • As noted in DC Rainmaker's review, Edge 820 Explore does not support power meters. (As opposed to Edge 820, which does support power meters)

    As for the Edge Explore 820, here’s how it’s different than the base Edge 820:

    – No WiFi
    – No Ambient Light Sensor
    – No ANT+ Power Meter or Shifting Support
    – No Structured Training Support (i.e. structured workouts)
    – No advanced metrics like performance indictor, FTP, etc…

    Devices which don't support power meters typically do not have power-related ActivityInfo fields such as currentPower, averagePower, etc. (Meaning that the symbol itself isn't present on the class.)

    The docs for ActivityInfo.currentPower claim it's available for "Edge 820 / Explore": https://developer.garmin.com/connect-iq/api-docs/Toybox/Activity/Info.html#currentPower-var

    It's also worth noting that there's a single edge820 device in CIQ, which is also referred to as "Edge 820 / Explore"

    From context, it's pretty clear that the one edge820 device in CIQ actually refers to two products: "Edge 820' and "Edge 820 Explore". I have no idea why this decision was made, because it means that if you want to create an application that targets power meter support, you have no way of including Edge 820 but not Edge 820 Explore. It also means you probably have no way of simulating Edge 820 Explore (so you could see that it lacks power meter support).

    Anyway, here's the fix for your code:

    if (info has :currentPower && info.currentPower != null) {
      potencia = info.currentPower;
    } else {
      potencia = 0;
    }

    You'll have to do that for all power-related fields, and possibly other fields related to advanced training or cycling. (Any field which has a list of supported devices in the docs could potentially be missing.) Since there's no shifting support in Edge 820 Explore, I assume frontDerailleurIndex and backDerailleurIndex will likely be missing, too.

    (Personally I wouldn't use 0 for missing/null data tho. For my apps which display activity data, I store null internally for null/missing data, and display something like "--" to the end user.)

    I also think Garmin should improve their documentation to note that just because a symbol is *sometimes* available for "Edge 820 / Explore', doesn't mean it's *always* available, since that's really 2 different products with 2 different feature sets.

    I filed a bug report for the docs:

    forums.garmin.com/.../ciq-documentation-doesn-t-make-it-clear-that-edge-820-explore-is-2-devices-with-different-featuresets-e-g-edge-820-explore-lacks-power-meter-support

  • Where/how is "potecaica" defined?

    If it was a problem with that symbol, you would think:

    - it would affect all devices (or OP would specifically say they have some kind of build exclusion which defines that symbol differently only for edge820)

    - it would be a compile-time error

    OP was actually on the right track with the 820 idea, but ofc you had to instinctively dismiss it out of hand.

  • Was not aware the 820 explore does not support power meter.. 

    Thanks for the extended and detailed answer!