BLE Low Power States | Cypress Semiconductor
BLE Low Power States
I am trying to work out the power saving methodology for a HID device.
The power saving application note states that its possible to enter a low power mode while still maintaining the connection. It does not explain how to do this.
Ideally, the device would want to have an active mode, slow poll mode, idle mode and stop mode.
The HID Mouse RDK example does have these states so seems to be an ideal model. The first problem with this example is there are no comments at all in the main code body, so its quite difficult to work out whats going on.
In all states except stop, the CPU sleep is the same ie:
if(CyBle_GetBleSsState() == CYBLE_BLESS_STATE_ECO_ON ||
CyBle_GetBleSsState() == CYBLE_BLESS_STATE_DEEPSLEEP)
But this is (I think) waking the CPU every 10ms connection interval so there does not appear to be much difference between all the 3 states.
The questions I have are:
Is there another BLE mode which can be used which maintains the connection but consumes less power (a longer connection interval)?
Does the CPU have to be woken periodically when the connection is maintained (assuming no user task pending)?
In the code before CySysPmDeepSleep(); there is a CyGlobalIntDisable. How is the CPU even waking at all if interrupts are disabled. It definitely does though. Does this mean the BLE is waking it at the connection interval even if interrupts are disabled?
I am getting approx 4 mA of current in all modes but that might be because I am only using a standard multimeter, maybe this is reading peaks only.