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