Hi All,
So I'm trying to understand who is responsible for handling chunking the
characteristic value in case the MTU of the connection is smaller than the
characters ic value size.

So for example, if I have a characteristic value of size 100B. When an iOS
App connects to my device and reads the characteristic value it gets the
entire value in a single read.
It seems like this may be the case because iOS automatically triggers an
MTU exchange.

However, when the Android App tries to read the characteristic value,
multiple reads are triggered (5 reads for 20B each). This causes the GATT
server access_cb() handler to be called 5 times for the "same"
characteristic read.

My questions are:
a) Isn't the BLE stack supposed to handle chunking the characteristic value
of 100B to 5 x 20B reads and supplying them to the Android App?

b) Does the Application have to save state for each read? check what the
session MTU is and expect those many callbacks to occur before knowing that
the entire characteristic value has been read?

c) Is an MTU exchange required for characteristic values > 20B to work
correctly?

d) Is it the responsibility of the peripheral or client to initiate the MTU
exchange?

e) Is is possible for certain BLE stacks/phones to NOT support increasing
the MTU?

Appreciate all the help,
-Pritish

Reply via email to