I refer the following the link . https://devzone.nordicsemi.com/f/nordic-q-a/33606/updating-advertising-data-manuf-spec-data-in-sdk15
I understand the adv data update. I tried it .it is working as per the link. But I want to update the scanrsp_data. for that I want to know the ble_advdata_encode() function parameters.
What is the input parameters . How the input parameters are designed ? I want to set both advdata & scanrsp data.
sd_ble_gap_adv_set_configure ? I tried below code snipptes
static uint8_t m_enc_advdata[BLE_GAP_ADV_SET_DATA_SIZE_MAX]; /**< Buffer for storing an encoded advertising set. */ static uint8_t m_enc_advdata1[BLE_GAP_ADV_SET_DATA_SIZE_MAX]; /**< Buffer for storing an encoded advertising set. */ /**@brief Struct that contains pointers to the encoded advertising data. */ static ble_gap_adv_data_t m_adv_data = { .adv_data = { .p_data = m_enc_advdata, .len = BLE_GAP_ADV_SET_DATA_SIZE_MAX }, .scan_rsp_data = { .p_data = m_enc_advdata1, .len = BLE_GAP_ADV_SET_DATA_SIZE_MAX } }; ret_code_t err_code; ble_advdata_t advdata; ble_advdata_t srdata; uint16_t len; uint16_t sr_len; ble_advdata_manuf_data_t manuf_specific_data; uint8_t ch_array[6] = {0}; err_code = sd_ble_gap_adv_stop(m_advertising.adv_handle); NRF_LOG_INFO("sd_ble_gap_adv_stop: %d", err_code); //APP_ERROR_CHECK(err_code); #if 1 memset(&advdata, 0, sizeof(advdata)); manuf_specific_data.company_identifier = APP_COMPANY_IDENTIFIER; manuf_specific_data.data.p_data = (uint8_t *) m_beacon_info11; manuf_specific_data.data.size = APP_BEACON_INFO_LENGTH; advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE; advdata.p_manuf_specific_data = &manuf_specific_data; #endif ch_array[0] = 0xaa; ch_array[1] = 0xaa; ch_array[2] = 0x55; ch_array[3] = 0xbb; ch_array[4] = 0x55; ch_array[5] = 0xaa; service_data_array.service_uuid = 0x00ff; //16 bit UUID still TBD service_data_array.data.size = 6; service_data_array.data.p_data = ch_array; srdata.service_data_count = 1; srdata.p_service_data_array = &service_data_array; len = m_advertising.adv_data.adv_data.len; sr_len = m_advertising.adv_data.scan_rsp_data.len; NRF_LOG_INFO("Scan response data len : %d ",sr_len); // err_code = ble_advdata_encode(&advdata, m_adv_data.adv_data.p_data, &len); // APP_ERROR_CHECK(err_code); err_code = ble_advdata_encode(&srdata,m_adv_data.scan_rsp_data.p_data, &sr_len); APP_ERROR_CHECK(err_code); err_code = sd_ble_gap_adv_set_configure(&m_advertising.adv_handle, &m_adv_data, NULL); APP_ERROR_CHECK(err_code); err_code = sd_ble_gap_adv_start(m_advertising.adv_handle, APP_BLE_CONN_CFG_TAG); APP_ERROR_CHECK(err_code);
While loading the program . I get error NRF_ERROR_INVALID_PARAM in err_code = ble_advdata_encode(&srdata,m_adv_data.scan_rsp_data.p_data, &sr_len);
APP_ERROR_CHECK(err_code); function. My doubt is how to this service data in the function.