I have confirmed in my side that the notification does not work when the ENABLE_LOW_POWER_MODE macro is not defined.
I also confirmed that the notification works when commented out the "if statement" at line 149 of the "main.c" file.
In the HandleLowPowerMode() funtion of the HandleLowPower.c file the ECO is controlled only when the "LOW_POWER_MODE" I assume that ECO does not work in non "LOW_POWER_MODE"
Can anyone investigate more ?
The ECO is required for running the BLE module iirc. And it should be able to run with and without low-power mode.
Try changing the CYBLE_BLESS_STATE_ECO_STABLE to (CYBLE_BLESS_STATE_ECO_ON || CYBLE_BLESS_STATE_ECO_STABLE)?
That is my understanding as well, from the SoC datasheet, the EOC (external crystal oscillator) is used to insure frequency accuracy of BLE communications with another device:
The ECO is used as the active clock for the BLE subsystem to meet the ±50-ppm clock accuracy of the Bluetooth 4.2 Specification.
I would think that clock should be stable before enabling BLE communication.. I don’t fully understand the relationship between Low_Power_Mode and the ECO clock. From the test that ntan performed it would appear that clock is not stable without entering Low_Power_Mode but as e.pratt points out it should be stable regardless.
Sent from Mail for Windows 10
8BF1DA6044F346818D01CAC7C788D869.png 148 bytes
3 of 3 people found this helpful
if(CYBLE_BLESS_STATE_EVENT_CLOSE == CyBle_GetBleSsState()).
When low power is enabled, the BLESS transitions between many states amongst which ECO_STABLE is one. However, when low power is disabled, the BLESS state remains EVENT_CLOSE and never transitions to ECO_STABLE which is why the if statement will never return true.
To answer the questions about ECO, it is used to obtain timing for BLE communication. It will be always ON if low power is not used. ECO will be turned OFF and ON when low pwoer is used. The CyBle_EnterLPM() will take care of this.