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.

RTOS/CC2640: Multiple Packets Per Connection Event

Part Number: CC2640


Tool/software: TI-RTOS

Hello,

I've been trying to gain a better understanding of how the multiple packets during a connection event works. It appears that there are restrictions on how many packets can be sent during a connection event from a peripheral to a central if the central device is an iOS or Android device, but the amount varies depending on what version of iOS or Android you have and what device you're using (iPhone 6 vs 7, Galaxy S8, etc...).

Comparing this to sending packets to another CC2640 chip, where it appears there are no restrictions at all to how many packets can be exchanged during a connection event, as the throughput_example project shows, where notifications are continuously sent from the peripheral to the central device until the connection interval time is up and it has to hop channels, and then resumes sending notifications.

1. Are these assumptions correct?

I'm trying to mimic what was done in the throughput_example project, sending a large amount of data through notifications from a peripheral device to a central device. The throughput_example is good starting point for this, but if there is a scenario where I'm talking to an iOS or Android device, that would mean I'm only able to send 4-6 notifications during a connection event instead of as many as can fit in a connection event. So how does this work?

2. Is the application code responsible for keeping track of how many notifications it sends out during a connection event?

3. If so, how does this work or what is the best approach to keeping track of notifications sent during a connection event and when to start sending notifications on the next connection event.

There doesn't appear to be any documentation on this topic or much information about how to handle the restrictions that iOS and Android have, just that they have restrictions. Is there any documentation out there that describes this that I've missed?

Thanks in advance.

  • Hi MT,

    Well, sort of, the restrictions on how many packets are sent (assuming a phone is the central/master) is basically dependent on the master. Some phones won't show up after a number of times in a particular connection event. (Thus the slave won't be able to send additional data during that connection event)

    Basically, the master is the ultimately decider of how many exchanges can happen during a connection event (assuming that the slave can do many)

    Yes - it's up to the application to keep track of the number of notifications sent. If I recall correctly there's stack hooks to check how many L2CAP Buffers are available, but it isn't shown in any examples at the moment. L2CAP_RegisterFlowCtrlTask. I check for documentation on this, I'm not sure it's currently documented.

    In regards to restrictions on iOS or Android, I'm not sure on these - you may be able to find iOS documentation on their developer's portal. Regarding android, it may vary depending on which controller is being used.

    I hope this Helps,
    Rebel