This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Can not update DIS characteristic

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?

Parents Reply Children
No Data
Related