I am working on a BLE peripheral. I have a large, variable length characteristic I need to set from the central.
When the central is the BTool, I can write up to the maximum size of my characteristic, which is 512 bytes. It carves it into 90 byte blocks, and sends them 18 bytes at a time.
When the central is Android, any write more than 18 bytes fails. In the onCharacteristicWrite callback I receive status 133 (GATT_ERROR).
Any ideas why I would get this error?
Edit 1: I also have a Windows client implementation. There, the function BluetoothGATTSetCharacteristicValue() returns 58, ERROR_BAD_NET_RESP, "The specified server cannot perform the requested operation.".
I have a test point that I set when I am copying the bytes from each packet into the blob. I can see that with both the Windows and Android implementations I am only getting the first packet.