Hello, when I run the subject example and connect to it, I see the RX and TX characteristics like I'd expect.
However, I see a descriptor on the TX characteristic which I didn't expect.
I've studied the code and can't see where this is added. There certainly is no call to descriptor_add or to sd_ble_gatts_descriptor_add.
What is the single descriptor, and is it added automatically and why? And if not, where is it added?
Thank you.
Edit:
Here is all the service initialization code
// Add the RX Characteristic. memset(&add_char_params, 0, sizeof(add_char_params)); add_char_params.uuid = BLE_UUID_NUS_RX_CHARACTERISTIC; add_char_params.uuid_type = service_uuid.type; add_char_params.max_len = 244; add_char_params.init_len = sizeof(uint8_t); add_char_params.is_var_len = true; add_char_params.char_props.write = 1; add_char_params.char_props.write_wo_resp = 1; add_char_params.read_access = SEC_OPEN; add_char_params.write_access = SEC_OPEN; err_code = characteristic_add(p_our_service->service_handle, &add_char_params,&(p_our_service->characteristic1_handles)); if (err_code != NRF_SUCCESS) { RETURN_FAULT(18,err_code) } ////////////////////////////////////////// // * Service // * RX characteristic // * TX characteristic <--- Add this ////////////////////////////////////////// // Add the TX Characteristic. /**@snippet [Adding proprietary characteristic to the SoftDevice] */ memset(&add_char_params, 0, sizeof(add_char_params)); add_char_params.uuid = BLE_UUID_NUS_TX_CHARACTERISTIC; add_char_params.uuid_type = service_uuid.type; add_char_params.max_len = 244; add_char_params.init_len = sizeof(uint8_t); add_char_params.is_var_len = true; add_char_params.char_props.notify = 1; add_char_params.read_access = SEC_OPEN; add_char_params.write_access = SEC_OPEN; add_char_params.cccd_write_access = SEC_OPEN; err_code = characteristic_add(p_our_service->service_handle, &add_char_params,&(p_our_service->characteristic2_handles)); if (err_code != NRF_SUCCESS) { RETURN_FAULT(20,err_code) }
Here is one screen shot from a phone sniffer, you can see "Descriptors: 1" even though no code creating it above
And here is another screenshot from my custom tool, you can see the UUID of the mystery descriptor