Hi Chris,
Thanks for the quick response.
I think CCCD events are quite important from a power management
perspective and worth clearly exposing.
2. How is a failed 'indicate' message handled?
Indicate generates an ACK, but are there any examples or documentation
around how to properly check for the response message to know if the
message arrived?
This is currently hidden from the application. If any GATT procedure
times out, the host terminates the connection. So, if the connection
stays up, that implies the indicate acknowledgement has been received.
That seems a bit drastic! If we are operating at the edge of the radio
range, or maybe if there's just a one-off error with the indicate
response, I wouldn't have expected an automatic disconnect myself. I can
understand handling the indicate internally if that simplifies things,
making any write attempts to an indicate characteristic a blocking call
until the response is received or we timeout, but then just return
'false' or an appropriate error and let the user decide if they want to
try again, disconnect, ignore the problem, etc.
Disconnecting on a simple indicate failure really seems like overkill to
me, though, but perhaps I'm missing some use case or requirement in the
core spec here. I haven't read through it in detail since 4.0 and then
a re-read a bit with the 4.1 release, but unfortunately I'm a lot more
familiar with the older 4.0 spec.
Kevin