D2 Charlie (CIQ 3.0.0) does not support Menu2?

According to the CIQ documentation, Menu2 is supported in version 3.0.0. However, in the simulator, Toybox.WatchUI has :Menu2 returns false for D2 Charlie, unlike every other watch that currently supports CIQ 3.0. I was wondering if this reflects the actual feature set on the watch, and if so, whether there should be a note in the docs. Obviously this is something that can and should be caught in testing (and possibly at run-time, with "has") , but it was a little unexpected.

In contrast, Toybox.PersistedContent has :getAppWaypoints returns true for D2 Charlie, which is another CIQ 3-only symbol.

https://developer.garmin.com/downloads/connect-iq/monkey-c/doc/Toybox/WatchUi/Menu2.html
  • Sounds like this is a bug in the sim. I see it too with the 3.0.4 SDK and the D2C. But I'd expect that the actual device has it.

    In apps, I'm still using a runtime check for Menu2 vs Menu - I support apps that run on CIQ2 and CIQ3 devices, and you can also run into cases where the ROW version of a device has CIQ3 but the APAC version is still on CIQ2 (That list gets smaller all the time).

    While I'm set up that I could use Jungles to use Menu or Menu2 based on the device, right now I do a has check for Menu2 when apps start and then use Menu of that has is false. I can't use a min CIQ version for the apps, because as I said, I support CIQ2 (and in one case CIQ1) devices.
  • Thanks for the advice jim_m_58 and for trying it out!

    It's my intuition that it's a sim bug, but I need to know for sure. In my Widget, it isn't possible for me to just switch to Menu at run-time, because I am not just using Menu2 for purely cosmetic reasons -- I am using it for dynamic menu items. Sure, I could rewrite the code to do the updates in a different way, but if I did, it would only to be to support the 735XT, because CIQ1-only devices will never be able to run my widget -- it uses PersistedContent, which is CIQ2-only. I also use the CIQ3-only PersistedContent.getAppWaypoints, which could easily be switched to getWayPoints at run-time, but I prefer not to. As you can imagine, things are a lot simpler if I just set the minimum SDK version to 3.x.x in the manifest.

    I am considering creating a new version of the app which uses CIQ1 PersistedLocations, but that won't work in a widget -- it has to be a device app, so it can't even be the same binary.

    Long story short, my specific app is either CIQ1-only or CIQ3-only, and it doesn't make much sense for me to add CIQ 2 support to the CIQ 3 version of my app, just for the 735XT -- and theoretically, the D2 Charlie, although I doubt it.

    I really just need to know if the D2 Charlie actually supports Menu2, and in that case, I can check that box in the build configuration. If I check the box and it turns out there's no Menu2 support in the real D2 Charlie, there's two possibilities: the app crashes, or it displays an error message: "Whoops, device not supported after all".

    In fact, I would argue that there's little point in targeting a CIQ2-only feature set today unless:
    - You're concerned about APAC devices which may not be updated to CIQ3 for a long time
    (My app only makes sense in the UK)
    - You're specifically targeting one of the CIQ2-only devices: 735XT, VAHR, Edge 520, Edge 1000
    (Out of those 4 devices, I only care about 735XT, since VAHR can't save locations, and I don't think any Edge owners will want this app)


    It would've been great if CIQ2 was just left behind completely, to avoid edge cases like this, but I get why that wasn't practical.

    Anyway, my app is super obscure, and I'm pretty sure the userbase will stay tiny, so I posted this mostly as a bug report.
  • Coleman will know about the device when he's in next week, but if you know someone with a D2C and need the info sooner, they can load Hike2. Then just start the app and long press up (menu). If the Title says Settings, it's got Menu2. If not, the title says "Set To:"
  • On a related note, I think the Descent MK1 was supposed to get CIQ 3 support (according to forum thread and a Garmin slide), but devices.xml still shows it as being at 2.4.1. Have Garmin's plans changed here?
  • jim_m_58 thanks! Nah, it's really not urgent. Like I said, the userbase is tiny, so at this point it's really just a curiosity.
  • There are still devices that should be getting CIQ3 that haven't, and the Descent is one of them (as well as the Oregon and Rino). And as I mentioned, before, some APAC devices might not have CIQ3 yet where the ROW versions do too.
  • jim_m_58 thanks, that's what I thought regarding the Descent. Yes, I understand about APAC vs ROW -- as I mentioned, in this case the app is only useful in the UK, so I am not too worried about that.

    I also realize in the general case it would make sense to do run-time checks for all the relevant functionality. In this very limited case (tiny userbase/obscure app), I am happy to simply support devices that I know will support CIQ 3. It's the perfect use case for "minimum SDK version" in manifest.xml, except for that one hiccup with D2 Charlie.

    I might make a CIQ 1 version of my app just for fun and for completeness, but it'll be very different than the CIQ 3 app, and I don't expect a lot of people to download it.
  • I'm pretty sure that all ConnectIQ 3.0 devices should have Menu2 support. I'll double-check and file a bug report if necessary.
  • Update: I've made the appropriate change, but it may take a little time for the device team to pull it in. The simulator should automatically get the fix for the next update.