I'm using SDK 7.1, PCA10028 eval board, SD110 7.1, MCP 3.6.0.8331
I have 2 characteristics, and both are 32 bytes long. When I try a "Write Long" from the MCP a BLE_EVT_USER_MEM_REQUEST is generated.
Originally, I tested this with just one of characteristic "New_Name". The BLE_EVT_USER_MEM_REQUEST would call the function:
void on_write_long(ble_blinds_t * p_blinds, ble_evt_t * p_ble_evt)
{
ble_gatts_evt_write_t * p_evt_write = &p_ble_evt->evt.gatts_evt.params.write;
int32_t err_code;
ble_user_mem_block_t *mem_block_struct;
mem_block_struct->p_mem = New_Name;
mem_block_struct->len = sizeof(New_Name);
sd_ble_user_mem_reply(p_blinds->conn_handle, mem_block_struct);
APP_ERROR_CHECK(err_code);
}
This worked, and New_Name was updated to the value I wrote from the MCP.
After I added the second 32-byte attribute I looked at p_ble_evt to find a handle or UUID pointing to the attribute I was writing to. I cannot find any identifier to know, which of the two attributes, is being written to.
I thought it should be in: p_ble_evt.evt.gatts_evt.params.write.context.char_uuid. In both cases, the char_uuid has the value of 0x1651 (this is a valid attribute UUID, but does not correspond to either of the 32-byte attributes I'm trying to write to.
In the MCP both of the 32-byte attributes have unique UUIDs, and neither is 0x1651, so I'm not sure why the .char_uuid has a UUID for a completely different attribute.
How can I identify which attribute is being written to, so I can set up the mem_block_struct, to point to the correct value? Why is the .char_uuid pointing to an attribute I did not write to?
Thanks, Clint