We are creating an app(Android and iOS) to connect to an esp32 via BLE using Flutter Blue Plus. The MTU is set to 500, but the message is 800+ bytes long. When connecting from iOS we get all the data successfully, but when connecting from Android we only see a partial message(500 bytes).
While debugging on the esp, I can see that both iOS and Android are triggering two read events, one with an offset of 0 and the second with an offset of 499. I see the second read after the following warning:
BT_GATT: attribute value too long, to be truncated to 499
So in both cases, it seems to be executing the same on the esp32 side. But on Android, I only get a partial message.
- Is the issue on Android that should be changed or
- is there something different I should be doing on the esp32 to handle this?
- Should I maybe generate a notification on the esp32 that there is a second part of the message available or
- how do I notify Android to read the complete message?
Edit: I'm working on the firmware side of the system and not on the mobile app, so I don't have a lot of information on how it is implemented on Android.