I have read that it is possible for a BLE peripheral to send more than one characteristic notification per time slot, thus increasing the bandwidth (e.g. see https://bluegiga.zendesk.com/entries/24646818-Throughput-with-Bluetooth-Smart-technology and https://punchthrough.com/blog/posts/maximizing-ble-throughput-on-ios-and-android ):
"When using the non-acknowledged data transmission operation, the Bluetooth Smart technology supports a "bulk transmission of data." This means that multiple packets can be sent in a single connection interval, since there is no need to wait for the acknowledgements to be received. This can enable higher throughput if the Bluetooth Smart radio is able to send multiple packets within a single connection interval".
Is this possible with KW40Z? How many messages can it enqueue and send in a single connection interval?
Thank you in advance,
Vito.
Solved! Go to Solution.
Hello,
On the KW40Z, one can send at least 4 notification packets inside a single connection event. You have to ensure that these packets are sent to the controller as fast as the it can know that are still pending frames and will not postpone the data for the next event. One good starting point for this kind of example is the Wireless UART application. It send 4 Write commands at the same time, as long as it has the data to fill the packets.
BR,
Alex
Is there any way to know how may notification packets have many notification packets are waiting to be sent on the next connection interval? I sometimes have a need to send more than four packets, but I have found that I will I lose packets if I call GattServer_SendInstantValueNotification or GattServer_SendNotification more than four times per interval. I am looking for a way to know when it is safe to send the next notification and knowing how many pending notifications there are will help me with that. For example, if I know there are four notifications pending, I can just hold off on sending any more until the pending count drops back to zero.
An alternative approach would be to keep track of how many notifications have been sent since the last connection event and, after four packets have been sent, don't send any more until after the next connection event. However, I have not been able to find a way to know when the connection event occurs or what the connection interval is once the connection has been established. Is there any way to get that information?
Hello,
On the KW40Z, one can send at least 4 notification packets inside a single connection event. You have to ensure that these packets are sent to the controller as fast as the it can know that are still pending frames and will not postpone the data for the next event. One good starting point for this kind of example is the Wireless UART application. It send 4 Write commands at the same time, as long as it has the data to fill the packets.
BR,
Alex