Hi,
nRF52820 / SDK 17.0.2 / Softdevice 7.2.0
I am trying to change DIS by referring to the post below.
https://devzone.nordicsemi.com/f/nordic-q-a/41257/dis-update-serial-number
What I want is to update with the DIS value after DIS initialization. For example, firmware version or serial number...
However, this code doesn't seem to work.
static uint32_t char_add(uint16_t uuid,
uint8_t * p_char_value,
uint16_t char_len,
security_req_t const rd_sec,
ble_gatts_char_handles_t * p_handles)
{
ble_add_char_params_t add_char_params;
APP_ERROR_CHECK_BOOL(p_char_value != NULL);
APP_ERROR_CHECK_BOOL(char_len > 0);
memset(&add_char_params, 0, sizeof(add_char_params));
add_char_params.uuid = uuid;
add_char_params.max_len = char_len;
add_char_params.init_len = char_len;
add_char_params.p_init_value = p_char_value;
add_char_params.char_props.read = 1;
add_char_params.read_access = rd_sec;
add_char_params.is_value_user = true; //Add
return characteristic_add(service_handle, &add_char_params, p_handles);
}
uint32_t ble_dis_update(uint16_t conn_handle, char * serial_num)
{
uint32_t err_code;
ble_gatts_value_t gatts_value;
ble_srv_utf8_str_t serial_num_str;
ble_srv_ascii_to_utf8(&serial_num_str, serial_num);
memset(&gatts_value, 0, sizeof (gatts_value));
gatts_value.len = serial_num_str.length;
gatts_value.offset = 0;
gatts_value.p_value = serial_num_str.p_str;
// Update database.
err_code = sd_ble_gatts_value_set(conn_handle, serial_num_handles.value_handle, &gatts_value);
return err_code;
}
Who can give advice?