Maximum memory (for data field) per device

Hi, is it documented somewhere the maximum available memory for a data field, per device? I can run each individual device in the sim to find out but wanted to see if this was documented somewhere convenient. Thanks!

/Fredrik

Top Replies

All Replies

  • Open your Connect IQ devices (*) folder, and look in {DEVICE_ID}/compiler.json (every device has a separate subfolder). (You can do a recursive search for "appTypes" in the top-level folder)

    (*) Windows: %APPDATA%\Garmin\ConnectIQ\Devices

    Mac/Linux (I think): ~/Garmin/ConnectIQ/Devices

    e.g.vivoactive4s:

        "appTypes": [
            {
                "memoryLimit": 524288,
                "type": "watchFace"
            },
            {
                "memoryLimit": 1048576,
                "type": "watchApp"
            },
            {
                "memoryLimit": 524288,
                "type": "widget"
            },
            {
                "memoryLimit": 32768,
                "type": "datafield"
            },
            {
                "memoryLimit": 524288,
                "type": "audioContentProvider"
            },
            {
                "memoryLimit": 65536,
                "type": "background"
            }
        ],
    
    


  • Thank you for your response. I found the devices folder under: ~/Library/Application Support/Garmin/ConnectIQ/Devices (on MAC) 

    However, the data is not entirely consistent with what I get in the simulator. For Fenix 6X Pro I get:

    {
    "alphaBlendingSupport": false,
    "appTypes": [
    {
    "memoryLimit": 524288,
    "type": "audioContentProvider"
    },
    {
    "memoryLimit": 32768,
    "type": "background"
    },
    {
    "memoryLimit": 131072,
    "type": "datafield"
    },
    {
    "memoryLimit": 32768,
    "type": "glance"
    },
    {
    "memoryLimit": 1310720,
    "type": "watchApp"
    },
    {
    "memoryLimit": 131072,
    "type": "watchFace"
    },
    {
    "memoryLimit": 1048576,
    "type": "widget"
    }
    ],

    Whereas in the simulator I get 124.6kB (for a data field) 

  • Couple of things here.  Recall that at times, 1024 is a "k", and at others, it's 1000.  Also, starting with CIQ 2, what's available to your app is 4k less than you see in files like this.  It's the "working space" for the VM.

    So for a background process it says "32768", in an app itself it's 28k.  You'll see watch face on some devices have 92k, but on those devices in this file, it will show as 96k.

    Go by what you see in the sim vs what you see in the files.

  • You'll also find subtle differences between devices of the same "generation" and similar memory limits. e.g. IIRC, Fenix 3 (HR) takes more memory to record an activity compared to FR 230, even though they have the same available memory for device/watch apps.

  • I realize this doesn't help you at the moment, but this information will be added to the device reference when the 4.0 SDK release ships. Hopefully me posting this here will help someone in the future.

  • What would be good is to give the possibility to use the manifest/barrel to generate dedicated rules depending on the available memory. At the moment, if we setup a config for low memory devices, we need to setup the list manually. Here could then generate a config for all devices which have more than 32k for example.

  • I agree that would be ideal.

    Idk if this helps, but what I do with my CIQ data fields which have different features / exclusions based memory limits is:

    1) Set up a list of all 16 KB (CIQ 1) devices. (This list should hopefully never change, as new CIQ 1 devices won't be released.) (The exception is Forerunner 45, but that watch doesn't even support any CIQ apps other than watchfaces)

    2) Set up a list of all devices with more than 32 KB. (This list has to be updated whenever a new device comes out)

    3) Use 32 KB as my default memory limit (by setting up default exclusions / resources).

    Once you get the initial lists set up, it's fairly manageable to just add new "large memory" devices by hand. And if you forget to add one (but still add support for that device), then that device is just limited to 32 KB (nothing breaks, since the actual memory limit is higher -- that device just doesn't get to take advantage of new features)

    If you need more granularity (e.g. differentiating between 64 and 128 KB devices), then expand 2).

    I have to admit it is a bit of a pain.

  • I helped me just now, Thank you Travis :-) 

  • I am not seeing memory limits on that reference page.  Was the information added?  Was it later removed?  Where can I get that info?