Number of packets sent in a connection interval in BLE and Throughput
The maximum LL PDU (Packet Data Unit) for BLE 4.1 is 27 Bytes. In these 27 Bytes, the actual data that is transferred as a GATT Write or Notification can be upto 20 bytes, excluding the L2CAP header, Data PDU Header and Attribute Operation Code. If the link is encrypted, the LL PDU will additionally have a 4 Byte MIC (Message Integrity Check), there by making the LL PDU as 31 Bytes.
The LL Packet comprises of LL PDU (31 Bytes) + PDU Header (2 Bytes) Header (1 Bytes) + Access Address (4 Bytes) + Cyclic Redundancy Check (3 Bytes)
= 41 Bytes
= 41 * 8 Bits
= 328 Bits
The propagation time of each bit is 1uS. So for 328 Bits it is 328 uS. After each packet is sent, an additional 80 uS is spent for acknowledgement. Also, there is T_IFS, (Interframe time between a packet and acknowledgement and also between acknowledgement and next packet)
So time taken for 1 packet to be sent is:
328uS (actual data) + 150 uS (T_IFS) + 80 uS + 150 uS (T_IFS) = 708 uS
The number of packets per connection interval = Connection interval / 708 uS.
If the connection interval is 7.5 mS, approximately, 10 packets can be sent.
The relation between the throughput and the connection interval is not so straight forward. As discussed in the previous interaction the time taken for sending 20 bytes is 708 uS.
Now let us discuss this with 3 cases of connection interval:
1) Assume that connection interval is 7.5 mS.
Number of packets sent is 7.5 mS / 708 uS = 10 packets.
Actually 708 uS * 10 = 7080 uS = 7.08 mS. So remaining 0.42 mS is idle (wasted)
2) Assume that connection interval is 8.75 mS.
Number of packets sent is 7.5 mS / 708 uS = 12 packets.
Actually 708 uS * 10 = 7080 uS = 8.496 mS. So remaining is only 0.254 mS is idle (wasted) (8.75 - 8.496 = 0.254 mS)
3) Assume that connection interval is 11.25 mS.
Number of packets sent is 11.25 mS / 708 uS = 15 packets
Actually 708 uS * 15 = 7080 uS = 10.620 mS. So remaining is 0.63mS is idle (wasted).
If you compare 1 and 2, increase in connection interval will result in less idle time. So increased throughput.
If you compare 2 and 3, increase in connection interval will result in more idle time. So less throughput.
So throughput and connection interval will not have a linear relation. However, if you increase the connection interval, power consumption will decrease. And vice versa. Because, less the connection interval, more often it has to be switched from sleep to awake and vice versa.