Forerunner 165 and 165s simulator gives an error what there is not drawAngeledText, but in documentation is
Forerunner 165 and 165s simulator gives an error what there is not drawAngeledText, but in documentation is
TL;DR drawAngledText and drawRadialText were previously removed from fr165/fr165m but should be back on the real devices with firmware 22.24.
They are still missing from the sim :/
--
Sorry for the very…
While this definitely needs to be documented, I'll say (it's hard to know with Garmin...) that it is possible that they forgot to add it back to the simulator, but it's also possible that they deliberately…
TL;DR drawAngledText and drawRadialText were previously removed from fr165/fr165m but should be back on the real devices with firmware 22.24.
They are still missing from the sim :/
--
Sorry for the very late response but the history here is:
- originally both the real and simulated fr165/fr165m devices had drawAngledText and drawRadialText. Many devs made apps for fr165 which used these functions with no problem
- at some point the simulated fr165/fr165m device configuration was changed to remove drawAngledText and drawRadialText. (The SDK changelog said something along the lines of "remove drawAngledText and drawRadial for devices which don't have a GPU")
- at some point, the real fr165/fr165m was updated to also remove those functions. This caused several apps to start crashing
- Garmin decided to restore these functions to real fr165/fr165m devices, in firmware 22.24
Fix some Connect IQ app crashes when drawing radial or angled text.
- unfortunately, it looks like the device configuration for the simulated fr165 and fr165m hasn't been updated yet to reflect the changes in the real device. so those functions are still missing in the sim
Here's a thread where people are talking about it (hasn't been updated in 3 weeks though):
While this definitely needs to be documented, I'll say (it's hard to know with Garmin...) that it is possible that they forgot to add it back to the simulator, but it's also possible that they deliberately removed it (not added it back) from the simulator.
My explanation for that would be that, originally the intent was not to have the function because there's no GPU. They don't want jungle generator scripts and compile time has checks to make it use the function. For the real devices they decided to add it back so the CIQ apps already out, and not getting upgraded won't crash.
I'd argue the chance that someone upgrades the FW but not the CIQ apps is not very high though...
My explanation for that would be that, originally the intent was not to have the function because there's no GPU. They don't want jungle generator scripts and compile time has checks to make it use the function. For the real devices they decided to add it back so the CIQ apps already out, and not getting upgraded won't crash.
Yeah this is plausible.
Honestly I never understood why FR165 had drawAngledText/drawRadialText considering it doesn't have a GPU. We were originally led to believe that a GPU would be a prereq of CIQ 4 devices (it was speculated this is why CIQ 3 devices did not get CIQ 4), but then they released new devices without a GPU, but which still had CIQ 4. (Ofc they were never going to release new devices without support for CIQ 4). Then it felt like devices without a GPU would not get any of the CIQ 4-only graphics functions, but that "rule" was broken with drawAngledText/drawRadialText and FR165. Now it seems like that exception has been reversed by Garmin.
Looking back at the API docs for old SDKs, it looks like Vivoactive 5 (which also doesn't have a GPU) never had support for those functions, and FR165 only gained support with 7.2.0 (released in June 2024, 4 months after FR165 was announced).
So they went out of their way to add support for FR165, then went out of their way to remove support.
(Yes, I realize that from the dev's pov, the device files aren't versioned like the SDKs, but changes to the device files are documented in the SDK via "view supported devices" and, sometimes, the changelog. There's probably a many-to-one relationship between internal device config versions and SDKs, based on statements from the CIQ team)
So idk why they added support for FR165 in the first place and idk why they removed support for FR165, but I do know that the removal was intentional (and it was literally in the SDK changelog). And it's entirely possible that they added it back in firmware to avoid crashes, but they deliberately kept it gone in SDK device configuration because they don't want devs using it going forward.
I'd argue the chance that someone upgrades the FW but not the CIQ apps is not very high though...
That was probably their original thinking, but they changed their mind when they saw all the users and devs who were complaining. They may have decided that it's not possible to force those devs to change their apps to make drawRadialText / drawAngledText optional. Indeed, some devs said they would not be willing or able to do so.
The argument from the devs side was that Garmin took away functionality that used to work, and it's not right for Garmin to break perfectly working apps. I would agree with that.
But then again, if Garmin has some reason of their own for removing that functionality (idk, battery life or product differentiation), then from Garmin's POV, there's no reason for them to make it easy for devs to use functionality in future apps.
So I think you're def on the right track here, as some devs have been asking Garmin about the device configuration in various threads, but Garmin has said nothing.
TL;DR
Looks like:
- support was removed on purpose
- support was only added back to the firmware grudgingly / to placate the angry mob
- support is probably purposely being withheld in the SDK
Speaking of using drawAngledText and drawRadialText in FR165, devs can still do so safely, as long as:
- they use has checks to conditionally use these functions. e.g.
if (Graphics.Dc has :drawAngledText) {
//...
}
- they use the compiler option --disable-api-has-check-removal
Just won't be able to test this in the simulator (for FR165) or rely on support to be in firmware forever
I suspect that with SDK 8.x, support of drawRadialText() and drawAngledText() was dropped on the FR165, intentionally. Therefore we have currently two choices: Discontinue support of FR165 on existing apps when compiling with SDK 8.x. Or stay with SDK 7.x for existing apps to further support customers who paid in the past for the app - but then the app won't be available to new devices like the Vivoactive 6, which isn't available under SDK 7.x. That's a BAD situation and totally avoidable by Garmin.
I suspect that with SDK 8.x, support of drawRadialText() and drawAngledText() was dropped on the FR165, intentionally
Well, that's kind of the gist of what was said above, except:
- support was removed around SDK 7.4.2, as per the changelog:
> Disable radial/angled text drawing if a product does not have a GPU.
- however, the changelog for SDK 8.1.1 says:
> Fixed a bug that could causeGraphics.Dc.drawRadialText() or Graphics.Dc.drawAngledText() to crash on some devices.
This is pretty much the same thing that was said in the FR165 firmware changelog.
To me this is an indication that maybe Garmin actually does intend to fix the fr165 device configuration. But maybe they forgot?
Discontinue support of FR165 on existing apps when compiling with SDK 8.x.
You could do what I said above:
Speaking of using drawAngledText and drawRadialText in FR165, devs can still do so safely, as long as:
- they use has checks to conditionally use these functions. e.g.
if (Graphics.Dc has :drawAngledText) {
//...
}
- they use the compiler option
--disable-api-has-check-removal
Just won't be able to test this in the simulator (for FR165) or rely on support to be in firmware forever
Or stay with SDK 7.x for existing apps to further support customers who paid in the past for the app - but then the app won't be available to new devices like the Vivoactive 6, which isn't available under SDK 7.x
This is not really an option as you won't be able to build apps for any existing CIQ 5 devices which have been updated to 5.1.0, including FR165.
Besides, as noted, the bug isn't literally in the SDK (despite being called out in the SDK changelog and being documented in the SDK API docs). The bug is in the device configuration, and switching to an older SDK won't cause the device configuration to be changed. The device configurations are kept independently of the SDKs, and currently you're only able to use the latest set of configurations that you downloaded, unless you made a backup in the past.
So switching to an older SDK would not fix the problem, even if you could still build for FR165 with the old SDK (which you can't).
For anyone following this thread, Garmin finally updated the fr165/fr165s device configuration files to add drawAngledText/drawRadialText back, so you can test these functions in the sim again.