GLONASS in "Position::Info"?

A number of folk have inquired on this forum about how to enable GLONASS in their application and whilst we never received an authoritative response from Garmin, the general consensus appears to be that if you enabled GLONASS in your most recently accessed Garmin CIQ app such as "Walk", "Run", "Ride" etc, then it would be enabled for your app.

The CIQ API documentation is silent on GLONASS. The Class:Toybox::Position::Info makes frequent references to GPS but no reference to GLONASS. It could be argued that in this case the term "GPS" is being used to refer to satellite based navigation systems generally which could include the US GPS and Russian GLONASS systems, but that could be wishful thinking.

The big challenge to investigating this is finding a way to determine whether or not the app is getting the GLONASS data, as there no attribute the Position::Info class that identifies the source of the data.

Based on further analysis of the timing errors that I have detected in the position data (reported here ) I have stumbled on a method of determining whether the data is from GPS or from GPS+GLONASS, and have determined that :
  • the CIQ apps use GLONASS when enabled in the app's settings but
  • the Position::Info class never uses GLONASS.


My method is too lengthy to publish here, and it is philosophically impossible to prove a negative, but if anyone has evidence that we do get GLONASS data in the Toybox::Position::Info class then I will be delighted to be proved wrong.
  • There are a couple of threads about this floating around there, including one started previously by you:

    The general rule is that Connect IQ will always receive data from the best available source. In the case of positioning, CIQ can enable location sensors or disable them, but cannot specify the source of the location data (e.g. GLONASS vs. no GLONASS, GPS altitude vs. barometric altitude, etc.). If the host device supports GLONASS and the last native app (e.g. Run, Bike, etc.) used GLONASS, then the CIQ app will use it too. At least that's how it's supposed to work. :)

    We have considered opening things up a little more, but the Garmin perspective has traditionally been that we'd prefer to always provide the best available source. If a Connect IQ app chose to use a less accurate source for some reason, a customer may get the impression that the device performs poorly even though it's the app that has restricted performance. There are some good counter-arguments, however. A good example is obtaining altitude for aviation applications--a GPS altitude is desired in some cases because a barometric altitude in a pressurized cabin will simply be wrong. We're still discussing the best approach.

    I'm not at all discounting your assertion that Position.Info never uses GLONASS. It's possible you've found a bug. I'll file a ticket and see what we can do to confirm whether there's a problem.
  • Apologies, I should have added these latest findings to my earlier post - in the heat of battle I had forgotten about the earlier post.
    I look forward to further news.
  • Could you share your findings on how to force GLONASS when it isn't enabled in the native apps?

    thanks,
    alex
  • There's not a lot to add. As Brandon explained, if you enable GLONASS in your last active app - and you can only do that for embedded Garmin apps like Walk. Run etc., then it's enabled for your current app.
    That said, the situation is still unclear as there's no way for us, the developers, to confirm that GLONASS is actually enabled.
    And, as I describe in the opening post, I personally have grave doubts that it's happening at all.
  • Okay, I thought you had figured out a way to always turn it on.

    A user of my app (Sailing on the Garmin store) said that your app is providing faster heading updates than mine. I'm using Position::Info, so I'm not sure how that can be. I thought perhaps you had figured out a trick to always force GLONASS mode and that was doing it.

    It is interesting that if you reboot the watch that it defaults back to GPS mode, and you still need to run a built-in app first to turn on GLONASS mode.
  • I wonder what he meant by "faster heading updates"? I'm using the positionInfo callback as the basic timer and refreshing the screen on every callback - this gives an update of around 1Hz. Are you using a separate timer to do your updates?
  • I'm doing the same thing (unless it is during the start sequence, then I update at 10Hz). He says that COG updates in your app are more responsive than ones in mine. I just installed your app last night to try and compare, but haven't had a chance yet. When I first found this thread I thought that perhaps you were forcing GLONASS and that somehow got increased resolution on GPS location and position.
  • Ah, yes, COG, what a tortured concept!
    I have laboured long and hard to achieve a responsive, accurate display. It's a running sore with me that the speed and heading delivered by positionInfo is not the GPS SOG/COG that I have been accustomed to from GPS interfaces on phones and handheld devices that deliver a SOG/COG data stream that is totally independent of the position info, and which is derived from the GPS chip itself doing clever stuff with doppler.
    On the watch, the speed and heading data is derived from the position info and the timestamp. So they are very noisy, subject to mathematical inaccuracies and need a lot of massaging.
  • I'm the user who reported the COG reporting discrepancy between the Sailing app and the RaceQs app.
    I've now built the Position Sample app.
    It behaves just like the Sailing app.
    I just did a quick test outside to put some numbers to what I'm observing.

    I ran the Sailing app for 2 minutes (timed) after the GPS Quality indicator turned green, while looking at indicated SOG and COG.
    SOG was around 1.5 kts while I walked, dropped to 0 when I turned around (180 degrees), and returned to around 1.5 kts, so those numbers seem real.
    During that 2 minutes, COG never updated. It was fixed at 037 degrees, which isn't close to either direction I was walking.

    Next, I ran the RaceQs app.
    In less than 5 seconds of getting a GPS indicator, I had COG which was updating, and updating around once per second.
    When I walked one way it read roughly 310 degrees, when I walked the other way, it read roughly 130 degrees.

    Finally, I ran the Position Sample app.... and got the same result as I got with the Sailing app.
    No COG updating during my test.

    So.... I suspect that the RaceQs app is producing COG from position info, and has given up on using the "heading" value that's provided in info.
    Can you verify ?

    And.... did you ever get resolution from Garmin about your discovery that the time being reported as GPS time has a number of issues ?
    Thanks