Is the 124kB limit forever?

Here's a question for Garmin.
Is the 124kB limit in CIQ2,3 a forever hardware limit or is it an arbitrary value that someone set, thinking "that should be plenty"?
I see that CIQ is somewhere in between Pebble, which had 56 Kb for compiled C code and WatchOS where there is effectively no limit (think scores of megabytes) for Swift code, and the Garmin watch does appear to have plenty of space for storing files. Not knowing anything of the device architecture, I can't know how appropriate the question is.
Is it possible, for example, that next year we'll see CIQ 4 with the capacity upped by a decimal point to 1.2Mb?
I'm just asking because I'm spending an inordinate amount of time and effort squeezing my app into the current space.
  • So this means makeWebRequest() doesn't even necessarily need a phone connection anymore (I realize you wouldn't be able to count on it)? Or does the phone still need to be there, just the request doesn't pass through the phone? I haven't played with music apps yet but this would be a nice feature to be able to utilize. Does BT vs wifi connection impact battery noticeably?
  • I'm guessing it will only use wifi if there's currently a connection, as making the connection would take longer than just using BT. And there's probably only be a connection if you're syncing activities or music. Wifi is power hungry so not something that would be connected all the time.
  • I started this post as I'm running out of memory, and I'm struggling to understand memory usage, and here's an example.
    My app runs in the sim on a Fenix5, using "Peak Memory" of 120.3 kB and Peak Objects 255.
    On my device, it crashes, out of memory the first time it attempts to send data with makeWebRequest.
    In the sim, I have activated "Simulate Data" and it's happily wandering the fields in KS,USA.
    I know I'm pushing the envelope, but I'm now working in the dark as to where the memory is being used.

    And BTW, when the watch is using WiFi, how does it negotiate the login?
  • Login for the wifi is configured on the watch itself, with GE, or GCM You set the password when you add a network in the Wifi configuration. When you try to connect with wifi, wifi looks for networks it knows and uses the password to connect.
  • Login for the wifi is configured on the watch itself, with GE, or GCM You set the password when you add a network in the Wifi configuration. When you try to connect with wifi, wifi looks for networks it knows and uses the password to connect.


    I guess you meant configured on the phone?

    More memory strangeness.
    My app crashes the f5 in the sim, but the fr645m (with 1019.7kB) reports Peak memory at 122.1 kB. The tests were running identical data from my canned track file and user input.

  • You configure Wi-Fi networks one of three ways:
    - On the watch itself (in the settings menu)
    - On the Garmin Connect Mobile app (with watch connected via Bluetooth)
    - On the Garmin Express PC/Mac desktop app (with watch connected via USB)

    In all 3 methods, you can choose a Wi-Fi network that the watch can currently see, and enter the credentials which will be remembered. Or you can change the password for a network that was already configured.

    Only GCM and GE allow you to add networks manually (i.e. networks that are not in range and/or not broadcasting SSID.)

    Also, if the Wi-Fi network displays any kind of login webpage where you have to click through an agreement (like most public or private hotspots at coffee shops, malls, public transport, airports, hotels, etc.), it won't work with the watch. So for all practical purposes, it's gonna be a home or office network.
  • Thanks for the comprehensive response.
    And I think I have sussed one aspect of the memory issue. The Peak Usage is not reliable. I don't think it's recognising the additional memory being used by
    stringA += stringB
    which, as Travis pointed out, requires double the space to create the new string.
  • I took out the phoneConnected check in one of by background process that does com, and in the sim, with BLE "Not Connected", things ran fine with a Wifi connection.

    I suspect it will be rare to see that condition on a real device as wifi isn't connected that frequently when the app runs.
  • Here's a question for Garmin.
    Is the 124kB limit in CIQ2,3 a forever hardware limit or is it an arbitrary value that someone set, thinking "that should be plenty"?
    I see that CIQ is somewhere in between Pebble, which had 56 Kb for compiled C code and WatchOS where there is effectively no limit (think scores of megabytes) for Swift code, and the Garmin watch does appear to have plenty of space for storing files. Not knowing anything of the device architecture, I can't know how appropriate the question is.
    Is it possible, for example, that next year we'll see CIQ 4 with the capacity upped by a decimal point to 1.2Mb?
    I'm just asking because I'm spending an inordinate amount of time and effort squeezing my app into the current space.


    Harking back my initial question in this thread, I note that in CIQ3, the objects limit on the VA-HR and many other devices has been increased from 512 to 65535, which really makes me wonder if the 128 Kb limit is really a hardware limitation or, as I suspect, a configuration option in the manufacturer's firmware.