Scheduling of Connection Events with multiple peripherals

We are considering using BLE for a multi node network. I have been looking into how bandwidth would be shared between peripheral connections and the scheduling of the connection events. I have questions about the feasibility of a couple scenarios.

First is if we have a mix of higher and lower bandwidth peripheral devices, could we do something as follows:

Have 4 higher bandwidth devices that use a connection event time of 2.5ms and a connection interval of 12.5ms, and have 4 lower bandwidth devices that use a connection event time of 2.5ms and connection interval of 50ms. Thus in each 12.5ms interval, each higher bandwidth device could transmit, and one lower bandwidth device could transmit. Can the lower bandwidth devices be scheduled so each one's connection event falls in a separate 12.5ms interval?

Second question is about adaptability of connection event scheduling. I understand that a connection event must be terminated before the start of the next scheduled connection event. So the relative position of each connection event puts a hard limit on how many packets and thus how much data each connection can transmit (the connection bandwidth). If some connections are not using their available bandwidth, that bandwidth is effectively lost. So I am wondering if it is possible to change the connection event scheduling and timing on the fly in order to adaptively allocate bandwidth to each peripheral device.

For instance, if 4 peripheral devices are connected, each with an initial connection event time of 5ms and connection interval of 25ms, normally only the last scheduled connection event (device 4) could take advantage of the spare 5ms in the connection interval to send additional packets. But if the central was to know that device 2 had a burst of data it needed to send, is there any way its connection event time could be increased to 10ms without requiring additional overhead, or will the fact that the anchor points for the proceeding connection events will shift mean that the central would need to send a bunch of additional packets to make this change?

Parents
  • Hi John, 
    Could you let me know which SDK /Bluetooth stack you are using ? 

    I assume you have looked at the scheduling documentation for the Softdevice controller ? It mentions about the Best Fit algorithm: 
    https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrfxlib/softdevice_controller/doc/scheduling.html#initiator-timing
    Where the connection event be scheduled depends on which timeslot is free at the time the connection is established. 

    Regarding your question, 

    Can the lower bandwidth devices be scheduled so each one's connection event falls in a separate 12.5ms interval?

    It can be scheduled right after the high bandwidth events. However, there is also a chance that the two low bandwidth event is scheduled right next to each other, just because it's when the scheduler find the free slot there. Something like this: 

    Where the red ones are low bandwidth and blue ones are high bandwidth. It's largely depend on when the advertising packet is received and where the nearest free slot is. 

    Regarding your 2nd question, you can take a look here: https://github.com/nrfconnect/sdk-nrfxlib/blob/main/softdevice_controller/include/sdc_hci_vs.h#L923

    As you can find the connection event can only be extended if it doesn't conflict with other connection event.  So if they are allocated back to back it's not possible to extend over the connection event. 

    My suggestion is to use a power profiler to visualize the scheduling on the central device (by looking at the power consumption you would know if the radio is active or not, and if it's in RX or TX mode). With the power profile you can find how the scheduler put each connection event in respective to each other. From that you may find the optimized configuration for your application. 

Reply
  • Hi John, 
    Could you let me know which SDK /Bluetooth stack you are using ? 

    I assume you have looked at the scheduling documentation for the Softdevice controller ? It mentions about the Best Fit algorithm: 
    https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrfxlib/softdevice_controller/doc/scheduling.html#initiator-timing
    Where the connection event be scheduled depends on which timeslot is free at the time the connection is established. 

    Regarding your question, 

    Can the lower bandwidth devices be scheduled so each one's connection event falls in a separate 12.5ms interval?

    It can be scheduled right after the high bandwidth events. However, there is also a chance that the two low bandwidth event is scheduled right next to each other, just because it's when the scheduler find the free slot there. Something like this: 

    Where the red ones are low bandwidth and blue ones are high bandwidth. It's largely depend on when the advertising packet is received and where the nearest free slot is. 

    Regarding your 2nd question, you can take a look here: https://github.com/nrfconnect/sdk-nrfxlib/blob/main/softdevice_controller/include/sdc_hci_vs.h#L923

    As you can find the connection event can only be extended if it doesn't conflict with other connection event.  So if they are allocated back to back it's not possible to extend over the connection event. 

    My suggestion is to use a power profiler to visualize the scheduling on the central device (by looking at the power consumption you would know if the radio is active or not, and if it's in RX or TX mode). With the power profile you can find how the scheduler put each connection event in respective to each other. From that you may find the optimized configuration for your application. 

Children
No Data
Related