I'm using SDK 7.1, PCA10028 eval board, SD310 2.0.1, MCP 3.6.0.8331
MCP and iOS are generating a different event sequences for a long writes.
MCP: after the BLE_EVT_USER_MEM_REQUEST event and my call to sd_ble_user_mem_reply, a BLE_EVT_USER_MEM_RELEASE followed by a BLE_GATTS_EVT_WRITE event. The next packet is set, another BLE_EVT_USER_MEM_REQUEST is generated followed by, BLE_EVT_USER_MEM_RELEASE and a BLE_GATTS_EVT_WRITE event. This repeats until I have received all the data.
iOS: after the BLE_EVT_USER_MEM_REQUEST event and my call to sd_ble_user_mem_reply, the BLE_EVT_USER_MEM_RELEASE is generated, but no BLE_GATTS_EVT_WRITE. This results in me receiving the first data packet, but no subsequent events. I believe the iOS device is waiting for some response from my App, but I don't know what that response should be.
FYI - we tested the iOS long write with a Bluegiga module and it works. Long reads with iOS and nRF51422 work. Long Writes nRF51422 using the Android MCP also work. I'm only having problems with long writes from iOS to Nordic's SD 310.
Is there a call to the stack that I need to make when the BLE_EVT_USER_MEM_RELEASE is generated to let the iOS device now I'm ready for the next packet?
Thanks, Clint.