I use the RSL10 as BLE peripheral, with code based on the peripheral_server_standby example. I use an Android phone running nRF Connect Android as central device. When I run the RSL10 in run mode, the Android phone can successfully establish a connection with the RSL10. However, when I enable the
BLE_Power_Mode_Enter(&standby_mode_env, POWER_MODE_STANDBY); command, it cannot establish a connection. I see in the log that the RSL10 correctly receives the GAPC_CONNECTION_REQ_IND message, so the connection request is successfully received. I used the nRF sniffer to capture the BLE packets in the air. In attachment, you can find the Wireshark capture files for both run mode and standby mode. It looks like the master (android phone) sends multiple LL_FEATURE_REQ messages, but the slave (RSL10) does not respond to the request with a LL_FEATURE_RSP message.
I thought initially that it was due to a timing error (the baseband timer does not wake up in time). However, the strange thing is that in standby mode, the advertisements are correctly sent by the RSL10. So only when a connection is established it does not work. In that case, after a time-out, the RSL10 returns to advertisement mode and it works again correctly.
Further, I realized that for the standby mode, if I use
BLE_Power_Mode_Enter(&standby_mode_env, POWER_MODE_STANDBY);, it works as expected and I get the same Wireshark log as in run mode. However, when I use a value larger than 1 in
BLE_Sleep_MaxDuration_Set(1);, it doesn’t work anymore.
Do you have any clue what could be the reason for this problem?
CMSIS PACK RSL10.3.5.285 (also tested with RSL10.3.6.465 but doesn’t work either)
RSL10 SIP EVB V1.2