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
  • Sorry to resurrect an old thread, but it looks like the simulator was fixed but the compiler wasn't. If you try to build a project for d2charlie, and the project contains a Menu2 resource, it will fail to compile, saying that d2charlie doesn't support it.

    This seems like a flaw in the build system in general. If a watch may or may not support a feature, depending on where and when it was sold/updated, I should be able to build as if it was supported, and then check at runtime whether the feature is actually supported. As it stands, I have to exclude the resource itself and exclude the code that loads it, even though the watch may support the feature...

  • Menu2 works fine for me with a d2charlie in the sum and the 4.0.8 SDK.

    As far as the build system, look at using "has".

    for example:

    hasMenu2=(WatchUi has :Menu2);

    Then use hasMenu2 to decide if you use menu or menu2

    Also, if you still have a problem, look at using resource overrides based on the device.

    resources-d2charlie

    See https://developer.garmin.com/connect-iq/core-topics/resources/

    where there are overrides based on the language, device, and device family.

  • Right. Menu2 works at runtime. But you can't build a Menu2 *resource* at compile time (the resource compiler gives an error). ie the only way to use it is to dynamically build the menu at runtime.