BLE multiple connection overlap

I am a student currently studying BLE.

At present, I am working on a multi-connection setup where both the master and the slaves are using the nRF52832. Specifically, I have 1 master connected to 2 slaves.

Both slaves are transmitting data using the "write without response" method with a connection interval of 10ms.

Sometimes, the data from each slave is written at 10ms intervals, but other times, it is written at 20ms intervals. (the transmission interval of Slave 1 is sometimes 10ms, as shown on the left, and sometimes 20ms, as shown on the right.)

I hypothesize that when the transmission occurs at 10ms intervals, the connection events do not overlap.

However, when it occurs at 20ms intervals, it is because the connection events are overlapping.

Is this a possible phenomenon? Also, is my hypothesis correct?

I look forward to your response. Thank you.

Parents Reply Children
  • Maybe you only need to set BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT, but in case it's already configured, you can use the _OVERRIDE.

    (Edit: In below text it should say BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE=y and BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT="to_what_you_want", not BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE="to_what_you_want").

    I guess this may change in future, but I would think if you want full control over this you want to set BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE=to_what_you_want and BT_CTLR_SDC_CONN_EVENT_EXTEND_DEFAULT=n.

    config BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE
    	bool "Override event length default"
    
    config BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT
    	int "Default max connection event length [us]"
    	default 0 if BT_ISO && !BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE
    	default 7500 if !BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE
    	range 0 4000000
    	help
    	  The time set aside for connections on every connection interval in
    	  microseconds. The event length and the connection interval are the
    	  primary parameters for setting the throughput of a connection.
    	  When connection event extension is enabled, more time may be used.
    	  The event length may be set to a value that is shorter than the time needed
    	  for a single packet pair on a given PHY.
    	  In that case the controller will reserve time for receiving 27 bytes and transmitting
    	  the number of bytes configured with BT_CTLR_MIN_VAL_OF_MAX_ACL_TX_PAYLOAD_DEFAULT.
    
    config BT_CTLR_SDC_CONN_EVENT_EXTEND_DEFAULT
    	bool "Enable connection event extension by default"
    	default y if !NRF_802154_RADIO_DRIVER
    	help
    	  When Extended Connection Events are disabled, the maximum connection event length is
    	  configured with BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT.
    	  When Extended Connection Events are enabled, the controller
    	  will extend the connection event as much as possible, if
    	  - Either of the peers has more data to send.
    	    See also: Bluetooth Core Specification, Vol 6, Part B, Section 4.5.6.
    	  - There are no conflicts with other roles of equal or higher priority.

  • Hmm, I feel I am missing something. The variable BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE is configured as Boolean:

    config BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE
    	bool "Override event length default"

    So my understanding is, that it can only be set to "y" or "n" and not "to_what_you_want". So I am a bit confused what the "_OVERRIDE" variable is really doing and how I would assign a number to a boolean.

  • Ah, set CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT_OVERRIDE=y to use a different BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT="to_what_you_want". That make more sense, but make sure to also set BT_CTLR_SDC_CONN_EVENT_EXTEND_DEFAULT=n, else it may ignore BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT if there are more data to send.

    Kenneth

Related