Feature Request: Detect whether bluetooth is disabled (in CIQ)

Environment
CIQ 3.0.8
FR935 (12.20)

Description of Feature Request
It would be great if CIQ apps were able to detect whether bluetooth is disabled by the user, as opposed to the phone not being connected (whether bluetooth is on or off.) This would allow CIQ devs to write watchfaces with tri-state Bluetooth/phone icons (bluetooth off, phone not connected, phone connected), just like the native 935 watchface.

From a user's POV, I find the tri-state bluetooth indicators very useful, because I want to know if I accidentally left bluetooth on, so I can turn it off and save battery. I don't run with my phone, so what's useful for many people (knowing whether their phone is connected or not), is actually almost useless for me.

I realize I'm probably in the minority, as I only turn on bluetooth when I want to sync with my phone, and I try to leave it off at all other times.

If I'm not mistaken, DeviceSettings:: phoneConnected only tells you whether your phone is connected or not. And (new for CIQ 3) DeviceSettings::ConnectionInfo[:bluetooth] has 3 states, (not initialized, not connected, connected), but on a real device (935), when I disabled Bluetooth in the controls menu, the state was still "not connected". I had (foolishly) assumed that "not initialized" was equivalent to "disabled", but I guess not.

Thanks for reading!
  • So in simple terms, you're proposing something like CONNECT_STATE_ON in connectionInfo?
  • No, more like CONNECTION_STATE_DISABLED, which is what I assumed CONNECTION_STATE_NOT_INITIALIZED covered (based on the docs):
    CONNECTION_STATE_NOT_INITIALIZED = 0
    Indicates that the connection is not setup or is inactive.


    However, that just means there's 4 enums instead of 3, which increases complexity.

    So maybe the actual implementation of CONNECTION_STATE_NOT_INITIALIZED could be changed to reflect what the docs say. In other words, when bluetooth is disabled (i.e. inactive) then the connection state would be CONNECTION_STATE_NOT_INITIALIZED.

    I realize this could break existing code which uses NOT_INITIALIZED, but that's only assuming that any apps really care about that weird edge case where you haven't paired a phone yet (*).

    (*) Assuming this is the only situation that CONNECTION_STATE_NOT_INITIALIZED is currently returned for bluetooth.

    In concrete terms, the native 935 watchface has 3 states for the phone icon:
    - Not present (bluetooth disabled)
    - Phone with slash through it (bluetooth enabled, phone not connected)
    - Phone (bluetooth enabled, phone connected)

    I just want a way to do the same thing in CIQ, if possible.

    (CONNECTION_STATE_ON wouldn't work, because it would overlap with CONNECTION_STATE_CONNECTED. I also wouldn't want to add another variable to connectionInfo, I would want to change how DeviceSettings::ConnectionInfo::state works.)