CIQ 3.2 - which devices will be supported some day and which will never be supported?

My watchface currently only supports devices that do support CIQ 3.2 and following:

  • Fenix 5 series
  • Forerunner 645 series
  • Forerunner 935 series

Those 3 series are not yet supported. The problem I face now is that I can't support garmin weather and open weather map weather at the same time as this needs quite some extra code and my watchface is already running at its limits.

Question:

  1. Will all devices get CIQ 3.2 over time?
  2. If not, could someone of garmin please update this announcement and also provide a list of devices that won't get an update?

I need this informations to decide if I should wait with a watchface update, abondon some supported watchfaces (I would go this way e.g. if the Fenix 5 will be supported as soon as it is supported), create a separate watchface version or make adjustments only...

  • I don't have answer to your question about 3.2. availability, but to be able to support multiple devices with limit to code size, you could use monkey.jungle excludes to drop code for 3.2 features from other devices. This would save your memory, and you could do this without separate versions.

  • I know. But actually I want to drop that code because it has a few problems: I do minimize the OWM API response in a google cloud service to save on device memory and all my chinese users can't use weather on my watchface because of this as their governmental firewall does block google services...

    Still thanks for the suggestion

  • It's not only if, but when. You have an added wrinkle that you're talking ROW vs APAC, where APAC devices typically are a ways behind ROW devices for something like this.

    This is a case where Jungles doesn't help, as while the ROW fr945 has 3.2 today, who knows when the APAC version will, and in Jungles, you can't do different things based on ROW vs APAC or CIQ version.

    The weather stuff in 3.2 probably will have minimal impact on your code, as you don't have things like a different background service, just getCurrentConditions(), and using (Toybox has :Weather) you can tell which to use, if you need to register a temporal, event, etc.

    Using "has" has another advantage, in that when a device does get 3.2, you don't have to watch for that or change any code.  It will just start using the 3.2 feature. 

  • But garmin returns a lot of different weather conditions so icon and label mapping will take up quite some code lines... Of course I can optimise this with jungles as Kurev suggested.

    As I mentioned above, I would prefer switching to garmin weather and drop my old code - for this decision an answer to my question would be helpful.

    Using the has feature means I must compile the weather code for garmin weather and open weather map into the app which means I just add additional size to my watchface that is already at its limits.

    And weather is not the only thing I can optimise, anti aliasing allows me to optimise even more eventually...

    ROW vs APAC

    I did not know this. This means, that the FR945 is listed as supporting CIQ3.2 but actually only some of those devices are in the end?

  • ROW is short for "Rest Of World", and APAC, "Asian Pacific".  Generally, if nothing is mentioned, it's referring to ROW

    Here for example is the 245m in an .iq file (ROW and APAC devices are both there)

    <iq:product connectIqVersion="3.1.6" filename="006-B3321-00/SimLean.prg" id="fr245m" minFirmwareVersion="400" partNumber="006-B3321-00" settings="006-B3321-00/006-B3321-00-settings.json" sig=...

    <iq:product connectIqVersion="3.2.0" filename="006-B3077-00/SimLean.prg" id="fr245m" minFirmwareVersion="500" partNumber="006-B3077-00" settings="006-B3077-00/006-B3077-00-settings.json" sig=

    You see that the first one has mins of 4.00 FW and 3.1.6 for CIQ (the APAC one),

    while the second has mins of 5.00 FW and 3.2.0 for CIQ (the ROW one)

    You could set the "App Minimum SDK" in your project's manifest to 3.2, but then the only targets available in the store have to have 3.2.0 or greater.  You drop support for anything that doesn't have 3.2 available (ROW or APAC)

  • By the way, 3.2 Anti-aliasing is pretty much free, as it's can be done with a single line of code (with a "has").

    if(dc has :setAntiAlias) {dc.setAntiAlias(true);}

  • ROW vs APAC

    Thanks for the clarification. But this means enabling/disabling features via jungles is not safe at all in this case and the only save way is :has in this case.

    Anti Aliasing

    I've already done what you suggest in my last release. But I'm thinking about testing to replace rotated fonts with polygons/lines/curves + transformations + anti aliasing (I even tried this a few months ago before I ended up with different fonts for each rotation level - not yet knowing that there is no anti aliasing)