Connect IQ 3.0.2 on Garmin Edge 520 to fix issue with ontimerlap()

Former Member
Former Member
Dear Garmin Support,
After some time reporting the issue with ontimer lap with workout system

https://forums.garmin.com/forum/deve...h-workout-file

the thread has been closed because issue is solved with SDK >3.
I've tryied updating the SDK 3.0.2 then I've discovered that it's ot supported on garmin 520.

When will it be supported? In that case issue is not solved yet.

Best Regards,
Paolo



  • There's actually two things going on with the version numbers here.

    The 3.0.2 SDK will build for any device, if it has CIQ1, CIQ2, or CIQ3, but will give you an error if you try to use a CIQ3 function on a CIQ2 device, for example. So the 3.0.2 SDK does indeed support the 520, but as a CIQ2 device.

    The second part is the VM (CIQ Virtual Machine) on the devices themselves. A CIQ1 VM only supports CIQ1 functionality, a CIQ2 VM supports CIQ1 and CIQ2 functions, and a CIQ3 VM, all three.

    The 520 is one of the devices that will stay with a CIQ2 VM. It won't be getting CIQ3 (same with the vahr, fr735 and Edge 1000) .

    Have you tried an actual 520 to see if it's fixed in the FW there? Or was this specifically listed as as something new with CIQ3?
  • Yes, it's something that's new with CIQ3. So if you have an Edge 520 or other older devices, unfortunately you're out of luck.

    The issue is that in CIQ, "workout laps" (or workout steps) have never been treated like "timer laps" (auto/manual). "Timer laps" would trigger onTimerLap() and workout laps would not. This is despite the fact that as far as the user can tell, they are equivalent. e.g. When I do a workout, native "lap pace" shows me the pace for the current workout step. When I look at the activity in Garmin Connect afterwards, each workout step has its own lap.

    Previously, there was no event for "end of workout step/laps", so it was impossible to handle workout laps in the same way as normal laps.

    The result is that every single CIQ data field which supports custom lap data has been displaying/recording junk lap metrics for programmed workouts. Users complained about this, which led to devs complaining, which leads us to this.

    The "fix" that Garmin made for this issue is to create a new CIQ3-only event -- onWorkoutStep() -- which is analogous to the existing onTimerLap(). So of course, every single app that supports custom lap data must updated, and if your users can't have CIQ3, well too bad for them.

    As discussed before, some of us believe this is a less than optimal solution, because:
    - It doesn't work on CIQ1 and CIQ2, so owners of old devices are SOL
    - It requires code changes on the app side, so users of old, unmaintained apps are SOL
    - It is logically inconsistent with the native Garmin functionality (FIT activity record and lap metrics) which treats "workout laps" and "timer laps" as completely equivalent,

    IMO, the most logical thing to do would've been to add "end of workout step" as another condition for triggering onTimerLap(), which would've automatically fixed the problem for all outstanding apps.

    For maximum flexibility, there could've been two new events such as "onWorkoutStep()", and "onActualTimerLap()" (or whatever), for devs who really needed to distinguish between the two types of laps.

    Of course that still wouldn't guarantee that the fix would've made it to CIQ1 or CIQ2, due to space concerns, but it would've been better than this.

    ---

    IOW, given the choice between...
    A) forcing everyone to opt-in to a change that most people wanted anyway (workout lap = timer lap), while leaving old devices and unmaintained apps behind
    B) automatically migrating everyone to the (assumed) correct behaviour while allowing devs who actually liked it that way (*) to opt-out with a code change
    ...
    I would've picked B).

    (*) I really have to wonder how many devs and users liked it that way? I understand the design philosophy of not changing existing behaviour with API updates, but what if that existing behaviour is something that literally nobody wants?
  • Former Member
    Former Member
    That 's exactly the point... I've raised the issue about two years ago and just now I've discovered the bug is not fixed for the device I use.. And I don't want to buy a new device which is working.