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.

CC2650EM-7ID-RD: Central says it is connected to peripheral but that peripheral says it is not connected

Part Number: CC2650EM-7ID-RD
Other Parts Discussed in Thread: BOOSTXL-CC2650MA

Hello,

I am using a Central role BLE device (BOOSTXL-CC2650MA) to connect to two Peripheral role devices (both CC2650EM-7ID) simultaneously. One of the Peripheral devices is GATT_Notification streaming data to the Central device (~210kbit) and while this is going on I connect to the other Peripheral device (which will not stream anything, just maintain a connection).

Most of the time this works fine, but sometimes the Central device will confirm a connection (GAP_LINK_ESTABLISHED fires with status SUCCESS) between it and the new, non-streaming Peripheral device while that Peripheral device does not go into the GAPROLE_CONNECTED state: it stays in the GAPROLE_ADVERTISING state. What's worse is that this happens again and again after this when i try to reconnect to the device: the Central will confirm the connection but the Peripheral seems to know nothing. Only a Peripheral device reset seems to fix the issue. When I call GAPCentralRole_TerminateLink from the Central and disconnect it from the Peripheral, the Peripheral does show that it has disconnected and will advertise again, even though it was never connected in the first place and was in the advertising state all along.

The software for this are adapted SimpleBLECentral and SimpleBLEPeripheral programs. Is there any way to fix this?

Thank you,
Jochem van Boxtel

  • Hi,

    Let's suppose three devices:
    -Central
    -Peripheral A (streaming)
    -Peripheral B (nonstreaming)

    Do you see any issues if you connect Peripheral B first then Peripheral A, does it maintain the connection?

    Best wishes
  • Hello,

    This gives the same situation as before. The order in which i connect them apparently doesn't matter. Now the central is connected to the non-streaming Peripheral and they both acknowledge this, but the central says it is connected to the streaming Peripheral and the streaming Peripheral doesn't transition into the GAPROLE_CONNECTED state.

    I have also gathered some more information since my last post. The progression upon establishing the second connection on the central device is (so the first connection has already been established succesfully):

    - The Central device calls GAPCentralRole_EstablishLink without error.
    - The Central device receives GAP_LINK_ESTABLISHED_EVENT with status SUCCESS.
    - The Central device starts Simple BLE Service discovery.
    - The Central device calls GATT_ExchangeMTU without error.
    - The Central never gets the ATT_MTU_UPDATED_EVENT.
    - After a long time, the Central device receives ATT_EXCHANGE_MTU_RSP and calls GATT_DiscPrimaryServiceByUUID, but it fails immediately with bStatus_t return 0x17 (blePending).

    The Peripheral doesn't seem to be doing anything during all this at the app level. After, the two devices stay in the state where the Central thinks it is connected and the Peripheral does not indefinitely.

    Thank you for your reply.