I have configured the settings of a Blood Pressure Feature characteristic to have RW authorized request. When the client reads the feature, the BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event is signaled. However, I have already set the value of the feature and I do not want to set it here. So I set the response as follows:
ble_gatts_rw_authorize_reply_params_t p_rw_authorize_reply_params; p_rw_authorize_reply_params.type = BLE_GATTS_AUTHORIZE_TYPE_READ; p_rw_authorize_reply_params.params.read.update = 0; p_rw_authorize_reply_params.params.read.offset = 0; p_rw_authorize_reply_params.params.read.gatt_status = NRF_SUCCESS;
Note that the update is set to 0, which as I understand it is supposed to IGNORE any attempt to update the characteristic but just return what is already there.
However, I get the error that soft device is unable to encode the packet. That is pretty obvious because I have given no packet information. If I DO give the proper packet info, the method succeeds. Why is that happening? It makes no difference if I set the 'update' parameter to 0 or 1. I specifically do NOT want to update the value. Is there missing information in the documentation.
Please note that I am using the ble_pc_driver so I am using only sd_* calls.