Is there a way to switch the satellites to UltraTrac mode from a CIQ app, or that option is only available from the activity/system settings?
Is there a way to switch the satellites to UltraTrac mode from a CIQ app, or that option is only available from the activity/system settings?
Yes, that's exactly the gap I'm trying to fill.
So here's my new code to display the menu:
And here's the code to set it:
I hope this will work with all devices. (For nitpickers: yes, I…
Hehe, no actually I do have the checks at compile time. I think there is at least one place in the above code where I use CONFIGURATION_GPS without checking if it exists, but also in a place in the code…
Yeah, and that lead to the following feature request (I don't understand how nobody opened such yet [or maybe I just couldn't find it]): https://forums.garmin.com/developer/connect-iq/i/bug-reports…
Ok, that's ok, the problem I have is with the older devices. i.e vivoactive3 in simultor. I made some code based on https://developer.garmin.com/connect-iq/api-docs/Toybox/Position.html#enableLocationEvents-instance_function but on vivoactive MY code doesn't get into any ifs:
Because vivoactice 3 had CIQ 3.1.6, but all these constants are only from 3.2.0 it doesn't enter any of the ifs.
I wonder what is the correct way to build this menu. Like if I haven't enter ANY of the ifs then should I display "GPS Only" and use
options = Position.LOCATION_CONTINUOUS;
On older devices, GPS uses what was used last by a native app. On devices like the va3 in my apps, I don't even have the option to set which GPS. On those with constellations but pre configuration, I allow those, and with configurations, I allow allowed on that device.
for example, newer watches have what's called "all systems", but not all have "all multiband"
So there are 3 different ways involved here, with not all options available for constellations or configurations.
OK, maybe I should clarify what I try to do:
1. I want to add an on-device menu in my watch-app where the user can change the GNSS settings.
2. I want to only display the relevant options, that the device supports.
3. As you can see I also have an additional menu so the user can completely disable GPS.
What I'm missing is what menu items to have on devices that are pre hasConfigurationSupport. I guess all devices (watches) support GPS, so maybe all I need to do is to always have the first 2 items: disable GPS, GPS Only and then add the rest according to the above code?
See my Hike2 app. Press Menu before you start recording, and this is one of the menu options. You won't see it on a device like the va3 as there are no options for GPS. On something like an f5. you'll se available constellations. On a 955/65 available configurations.
On devices without hasConfigurationSupport or where that is false, you may have constellations, and if I recall, has checks should work for that.
for example, newer watches have what's called "all systems", but not all have "all multiband"
To clarify this, the 2 options are:
- "All Systems"
- "All + Multi-Band" [in support articles, this is also referred to as "All Systems + Multiband"]
The "+" is significant because it emphasizes that "All + Multi-Band" is actually "All Systems" with/plus "Multiband".
In both cases, "all" or "all systems" refers to all GNSS systems [GPS, GLONASS, Galileo, etc.]
Multiband refers to using dual frequencies to talk to a given GNSS system (where applicable).
https://support.garmin.com/en-IN/?faq=9NWiPDU4gM0JWMfdWFol7A
On my fr955, the full list of options for the activity Satellites setting is:
- Off
- Use Default [a new option which uses the global setting]
- GPS Only ["Good battery, Good accuracy"]
- All Systems ["Better Accuracy"]
- All + Multiband ["Best Accuracy"]
- Auto Select ["Dynamically selects best mode based on your environment"] [this is the same as SatIQ]
- UltraTrac ["Best Battery, Low Accuracy"]
I'm sure you are aware of all of that, but if others are reading this thread, they probably won't know what "all systems" and "all multiband" mean without context.
And I think omitting the "+" from "All + Multiband" actually obscures the meaning of the setting. The "+" is there for a reason. Garmin purposely did not call it "All Multiband", they called it "All + Multiband".
What I'm missing is what menu items to have on devices that are pre hasConfigurationSupport. I guess all devices (watches) support GPS, so maybe all I need to do is to always have the first 2 items: disable GPS, GPS Only and then add the rest according to the above code?
Unless you only support devices with CIQ 3.2 and later, I think there are 3 (not 2) scenarios to consider:
1) Pre CIQ-3.2: no support for CONSTELLATION_* or CONFIGURATION_*. GPS/GNSS can only be turned off and on [using Position.enableLocationEvents, as we all know]
2) CIQ 3.2 up to, but not including, CIQ 3.3.6: use CONSTELLATION_* to configure GNSS
3) CIQ 3.3.6 and higher: use CONFIGURATION_* to configure GNSS
As written, your code only seems to to consider 2) and 3) (which is fine if you are not supporting devices older than 3.2). Note that there are CIQ 3.x devices which are still lower than 3.2. My old FR935 is on CIQ 3.1.8, and I believe it's on the final firmware update [21.00]. fr935/compiler.json specifies CIQ 3.1.6 and FW version 15.10.
[1/x]
It *is* pretty hilarious that the CONSTELLATION_* docs simultaneously say that the enum is available both "since 1.0.0" AND "since 3.2.0", but the device files [*.api.debug.xml] seem to confirm that's really since 3.2.0. Yeah, "technically" the enum type is available since 1.0.0 -- if you exclude the specific enums which were added in 3.2.0 (which is all of them). This actually isn't the first time I've seen the docs say that some enum type is available since API Level 1.0.0, but actually every single enum is only available in API level [much higher than 1.0.0].
[Search for "CONSTELLATION_
- including the quote - in your devices/ folder]
[2/2]
Yes, that's exactly the gap I'm trying to fill.
So here's my new code to display the menu:
And here's the code to set it:
I hope this will work with all devices. (For nitpickers: yes, I know it will only work if has check is done at compile time)