Complete
over 5 years ago

WERETECH-8149

requiresBurnInProtection returns "true" on Fenix 5X 14.72 Beta

In WF CircularDidital, I have the code:

    function onEnterSleep() {
		var settings = Sys.getDeviceSettings();
		if (settings has :requiresBurnInProtection && settings.requiresBurnInProtection) {
			mIsBurnInProtection = true;
		}
        WatchUi.requestUpdate();
    }

...
    function onUpdate(dc) {
...    
        if (mIsBurnInProtection) {
        	AlwaysOn(dc);
        	return;
        }
...
    }

When this code is executed on Fenix5x 14.72 Beta, the "AlwaysOn (dc)" function is called. It is not called immediately, but a few seconds after the activation of WF, apparently after onEnterSleep()

I did it for Venu, but I did not expect it to work for other watches. I can solve it by adding a screen resolution to the analysis, but it shouldn’t be like that!

  • requiresBurnInProtection is now set to true in the Fenix 5X 15.10 Production firmware. This was the cause of the Crystal watch face crashing on that firmware (see https://github.com/warmsound/crystal-face/issues/157). I've added an additional screen size test for Venu before entering always-on mode.

  • Ok, I found a way to reproduce this.  It only happens with the f5x, and I tried others with a CIQ 3.1, including an f5 with the same firmware version.  I added some println calls in both initialize() and u=in onUpdate() and here's what I see:

    Start: requiresBurnInProtection is false
    onUpdate() requiresBurnInProtection is now false inLowPower=false
    onUpdate() requiresBurnInProtection is now false inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=true
    onUpdate() requiresBurnInProtection is now true inLowPower=true
    onUpdate() requiresBurnInProtection is now true inLowPower=true
    onUpdate() requiresBurnInProtection is now true inLowPower=false
    onUpdate() requiresBurnInProtection is now true inLowPower=false

    Notice how "requiresBurnInProtection" starts as false (that is what it should be) but after two onUpdate() calls, it switches to true and stays that way.  It should never be true on the f5x, but would explain why I wasn't seeing it very often before, as I only did the check in initialize().

    Here's a zip of the project.  Just sideload to watches and pre-create a log file to see this.  With the f5x, in addition to the 13.72, there was an update to display, so that may be involved here.

    WfBurn.zip

  • Oh wait!  I'll be darned, I did just see this on a f5x.  definitely a bug!  Let me see if I can find a way to reproduce this.  It's not consistent and I ran hours without seeing it.

  • Yes, 14.72 with a CIQ 3.1.4 VM.

  • What version of FW on your F5X? 14.72 Beta? It is about this version.