In my case I control the both sides. But I want to make the sides maximally standard. For example my Bangle "Speed display" should work not only with mine Android GATT Location and Navigation service but with any other GATT Location and Navigation service that other GNSS devices can provide.
And there in the GATT specs https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=271997 is stated
3.4 LN Control Point
If the LN Control Point is supported, profiles utilizing this service are required to ensure
that the Client configures the LN Control Point characteristic for indications (i.e., via the
Client Characteristic Configuration descriptor) at the first connection.
The Server should use indications in other transactions as well, where Client writes values to the server, for example - "The response shall be indicated when the route has been selected using the Response Code Op Code, the Request Op Code along with “Success” or other appropriate Response Value."
So, it looks like the App should issue the confirmation. I assume it should be done from a notification/indication handler function.
If I am correct, we need just to introduce a new function in NRF, something like confirmIndication(event).
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Hi Gordon,
yes, when I choose to send indications, with confirm=true, it then doesn't work. It looks like Espruino does not respond with confirmation. And in BLE the initiator of an indication cannot send another indication if it has not received the confirmation.
I read what I could find in Google, some say that confirmation should be send by Client app, some say that it is a part of ATT stack and should be sent automatically.
I've found this func from Nordic API https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.s132.api.v5.0.0%2Fgroup___b_l_e___g_a_t_t_c___f_u_n_c_t_i_o_n_s.html&cp=2_3_1_1_0_2_2_2_7&anchor=ga173e2d16c9bbd24dcf2c724ded6708a5
uint32_t sd_ble_gattc_hv_confirm ( uint16_t conn_handle, uint16_t handle )
Is it what is needed?
In my case I control the both sides. But I want to make the sides maximally standard. For example my Bangle "Speed display" should work not only with mine Android GATT Location and Navigation service but with any other GATT Location and Navigation service that other GNSS devices can provide.
And there in the GATT specs https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=271997 is stated
The Server should use indications in other transactions as well, where Client writes values to the server, for example - "The response shall be indicated when the route has been selected using the Response Code Op Code, the Request Op Code along with “Success” or other appropriate Response Value."
I've found a good article with clarification of how the confirmations work.
https://community.silabs.com/s/article/kba-bt-0104-acknowledged-vs-unacknowledged-gatt-operations?language=en_US
So, it looks like the App should issue the confirmation. I assume it should be done from a notification/indication handler function.
If I am correct, we need just to introduce a new function in NRF, something like confirmIndication(event).