This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2640 Multi Role Central will not connect to iOS 9 Peripheral

Other Parts Discussed in Thread: CC2640

I have an application where I sometimes need to swap central/peripheral roles between the CC2640 and Android/iPhone. The CC2640 starts out as the peripheral and is discovered and connected to by the mobile device. The mobile device then starts advertising as a peripheral and the CC2640 scans and then connects back as the central device. This requires dual role support and support for at least two simultaneous connections.

I am using the 2.2.1 Stack and have tested it with both the iPhone 6 running V9.2.1 of iOS, and a Nexus 6P with Android V7.1

This works very reliably with the Nexus 6P but only very intermittently with the iPhone 6.

The CC2640 is always able to scan and discover the iPhone 6 advertisements and always returns an 0x00 success error code when I call GAPRole_EstablishLink() but it's seldom that the CC2640 actually sends a CONNECT_REQ message over the air to the iPhone. 

I have found that if I kill the initial peripheral connection before calling GAPRole_EstablishLink() as the central, it will reliably send the CONNECT_REQ message but I need both links to be available at the same time.

I have assumed that this was some sort of timing issue and have used the combination of Clocks and AppMsg events to delay the GAPRole_EstablishLink() call but without success. If I set it up to restart the clock so that it retries over and over again, it will sometimes send the CONNECT_REQ message and successfully connect. I have also tried various connection intervals as slow as 30mSec.

Any suggestions as to why the CC2640 is not sending a CONNECT_REQ over the air to the iPhone but works OK with Android?

Thanks.