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

Connection event position in time

Dear Nordicers,

I have an application where node based on s132 sofddevice 4.0.2 has multiple connections as a peripheral and as a central. The case is about non overlapping central and peripheral connection events. I can make all my central connection events non overlapping according to initiator timing and connection timing as a central.

How about peripheral connection events? Does softdevice take into account existing peripheral connections when placing new central connection events? Can I force peripheral connection event (managed obviously by remote central) to be located in time not used by my local central links? Can central move connection event anchor point (for example by Connection Update Procedure)? Do I have any control over transmitWindowOffset/transmitWindowSize (Bluetooth Specification 4.2 Vol 6, part B, chapter 4.5.4). Can I get timing information about existing connections from softdevice? Do softdevice perform automatically any procedure to ensure peripheral and central connection events on the same node do not overlap?

  • Isn't that described in SD specification (Scheduling section)?

  • I suspect that according to scheduling when peripheral cennection events overlap with central connection events, the one which is first will suppress the later one. But I want to avoid this situation and move anchor point of connection such there would be no overlaps at all.

  • I understand your fear but if you think it through there is no other solution to the problem: you have several asynchronous activities and only one radio, they will "meet" sooner or later and the only way how to deal with it is to make priorities and temporarily suppress some events. Luckily BLE thinks about such situations by design so it is not affecting reliability of the connection link, just throughput (logically;) You can try to minimize these overlaps by synchronizing the connection events but that won't really work because connection always starts with advertising packet and these are completely asynchronous (= random). There is small some limited space by choosing the same connection interval for all links (if you are GAP Central) and letting Soft Device to move first connection event of each connection to available "gap", then these should stay in sync. But overall...

  • ...this doesn't look like complete solution, once you have any GAP Peripheral connection you are more or less lost. In the end suppressing some events won't occur often (you can do some simulations and benchmarks yourself) so there should be no problem.

  • connection always starts with advertising packet - connection start is not an anchor point to connection events, look at transmitWindowOffset and Initiator timing? I suspect BLE specification predicted this case, but I don't know if s132 does anything about this.

1 2