1
votes

I have a Hardware device with Bluetooth LE version 4.2, and it can send the data packets with the payload of 251 bytes. But the i will be receiving the data through a mobile app(Android & IOS), and mobiles will have different Bluetooth LE versions like v4.0, v4.1 or v4.2.

Assume my hardware device acts as Master and the mobile acts as slave. And here master does not know the slave's Bluetooth version.

If the master sends the data packet with the payload of 251 bytes, how the slave (v4.0 - payload: 33 bytes) can handle it.

Question 1: Can the BLE GATT server is capable of handling this case of backward compatibility by keeping the buffer of 251 packets and send 33 packets one after other?

Question 2: What could be the best possible approach to get high through put, by keeping the master at v4.2 and still answer the slave with all BLE versions?

Regards, Siva.

1

1 Answers

1
votes

If you read the Bluetooth Core specification, you will find that on the Link Layer the Link Layer packet size can be negotiated from both sides (slave or master doesn't matter). If the other device doesn't support it then the default length will be used. Otherwise the larger length will be used. So it's fully backwards compatible.

Also the GATT layer doesn't need to be changed at all to support LE Data Length extension, since the fragmentation and reassembly is handled by the L2CAP layer.

Note however that you need to exchange a large MTU for GATT in order to make use of the feature. Preferably 4+MTU should be a multiple of the Link Layer packet max length.