In the documentation and the example code (which is nothing more than a bunch of unit tests so they do not help with the development of functional production implementations) there is no information about what triggers the RBLE_GAP_EVENT_RPA_RESOLVED event. I handle this event but it is never received. The procedure diagrams do not cover this event as they do not cover the RBLE_SM_CHK_BD_ADDR_REQ event.
Does anyone know what I need to do in order to trigger this RBLE_GAP_EVENT_RPA_RESOLVED event? It does not come after the peer sends its IRK (at which time the spec requires that the resolved address is sent). I thought it might come after the RBLE_SM_IRK_REQ_IND whose response actually asks for the IRK of the REMOTE device in the RBLE_SM_Irk_Req_Resp() if one believes the documentation. However, there is no indication that sending the response would trigger the RBLE_GAP_EVENT_RPA_RESOLVED event. It might be the case (and the documentation forgot to say so) but I always get this request before I have received the IRK from the remote device so I have to respond with nothing.
Its a mystery that I hope someone can solve. Improved documentation on the functionality in general would help, and what is desperately needed are simple examples of REAL exchanges that can work with real peers instead of a large set of unit tests.