This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Softdevice BLE TDM Scheduling

Hi,

I have a question regarding BLE timeslotting. In my setup I have a master with multiple slaves and equal connection intervals set at 7.5ms. The slaves acquire data that is accessed via notifications. Ideally I would like to fit as much data as possible into the 7.5ms to enable other slaves to communicate to the master at consecutive 7.5ms intervals.

Reading the BLE specs, you learn BLE uses time-division multiplexing where the timeslots have a width of 625us. Besides, the master can only start communication on even numbered time slots, whereas slaves can only respond on odd numbered time slots. Multi-slot packets can be extended to 3 or 5 timeslots. So far so good.

With the BLE 4.2 spec in mind and a link speed of 1MBit/s, I calculated you can roughly fit 78 bytes in 625us. It could be efficient to send the data as in the figure below. The green 'data' slots contain packets where the first two packets have 78*3=234 bytes (subtracting link-layer and attribute-protocol overhead, 208 databytes ). With GATT we are limited to 510 databytes, so the third packet would be considerably smaller.  

 

The point I am trying to make here is: I should easily be able to send 510 databytes to the master. However, when I try to do this, the first two packets are in the same connection interval. The third packet always falls in the second connection interval (see the WireShark capture below). Why is this? Does this have anything to do with symmetric TX/RX times? How does the softdevice schedule? 

Thanks in advance!

Remi

Related