Apart from the WDT interrupt the BLESS interrupt ( .cydwr-> Interrupts ) will also wake up the BLESS as well as System from the DeepSleep at every connection/advertising interval.
Please confirm the issue keeping in mind both WDT and BLESS Interrupt or any other interrupt source , if they are preventing to go the BLESS in DeepSleep.
Please attach the project here if you have any observations/further queries.
Yes, I took that into account. I can see the device waking up every connection interval (240 ms), but the 125-240 ms of staying awake every 45 seconds doesn't look like it's related, except for the longer timer (240 ms) being equivalent to the connection interval.
I got it working by never going to sleep when CyBle_EnterLPM(CYBLE_BLESS_SLEEP) returns CYBLE_BLESS_SLEEP instead of CYBLE_BLESS_DEEPSLEEP. I figured that if the BLESS does not return CYBLE_BLESS_DEEPSLEEP, it's because it's busy with a BLE transaction.
So what happens now is I stay awake for a little bit more by polling CyBle_EnterLPM(CYBLE_BLESS_SLEEP) a bit, but I'm able to go to sleep and then deepsleep.
Thank you for your time,