In sample projects many of it have this text:
On an advertisement event timeout, if the device is not connected to any Client, the device goes to the Low Power mode (Hibernate mode) and waits for a SW2 button press to wake up the device again and start advertising.
but Sw2 not have interrupt handler and when user push button program make restart. I see for example in BLE_Battery_Level this message :
"BLE Battery Level Example Project " that placed in start of code.
How make that device will be real wake up ( advertising without reset) ?
Do not use the Hibernate mode, use deep sleep instead. Wakeup from Hibernate is only via reset,
wakeup from deep sleep uses the PICU (Peripheral interrupt Controller). So when your system generates an interrupt (Attention: only LFCLK is running!!!) the PICU gets you out of bed.