Hello guys! And girls
My project is working as expected in SDK14.2.
I'm updating adv data (manuf. spec. data) without any problem with this function
static void advertising_data_update(uint8_t adv_manuf_byte)
{
ret_code_t err_code;
ble_advertising_init_t init;
ble_advdata_manuf_data_t adv_manuf_data;
uint8_array_t adv_manuf_data_array;
uint8_t adv_manuf_data_data[1];
adv_manuf_data_data[0] = adv_manuf_byte;
memset(&init, 0, sizeof(init));
init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
init.advdata.include_appearance = false;
init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
init.advdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
init.advdata.uuids_complete.p_uuids = m_adv_uuids;
adv_manuf_data_array.p_data = adv_manuf_data_data;
adv_manuf_data_array.size = sizeof(adv_manuf_data_data);
adv_manuf_data.company_identifier = APP_COMPANY_IDENTIFIER;
adv_manuf_data.data = adv_manuf_data_array;
init.advdata.p_manuf_specific_data = &adv_manuf_data;
init.config.ble_adv_whitelist_enabled = true;
init.config.ble_adv_directed_enabled = true;
init.config.ble_adv_directed_slow_enabled = false;
init.config.ble_adv_directed_slow_interval = 0;
init.config.ble_adv_directed_slow_timeout = 0;
init.config.ble_adv_fast_enabled = true;
init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
init.config.ble_adv_fast_timeout = APP_ADV_TIMEOUT_IN_SECONDS;
err_code = ble_advdata_set(&init.advdata, NULL);
APP_ERROR_CHECK(err_code);
}But in SDK15 the function ble_advdata_set() has been deprecated.
The migration guide is says to use ble_advdata_encode() and sd_ble_gap_adv_set_configure() instead.
So I changed it to something like this
static void advertising_data_update(uint8_t adv_manuf_byte)
{
ret_code_t err_code;
ble_advertising_init_t init;
ble_advdata_manuf_data_t adv_manuf_data;
uint8_array_t adv_manuf_data_array;
adv_manuf_data_data[0] = adv_manuf_byte;
memset(&init, 0, sizeof(init));
init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
init.advdata.include_appearance = false;
init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;
init.advdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
init.advdata.uuids_complete.p_uuids = m_adv_uuids;
adv_manuf_data_array.p_data = adv_manuf_data_data;
adv_manuf_data_array.size = sizeof(adv_manuf_data_data);
adv_manuf_data.company_identifier = APP_COMPANY_IDENTIFIER;
adv_manuf_data.data = adv_manuf_data_array;
init.advdata.p_manuf_specific_data = &adv_manuf_data;
init.config.ble_adv_whitelist_enabled = true;
init.config.ble_adv_directed_high_duty_enabled = true;
init.config.ble_adv_directed_enabled = false;
init.config.ble_adv_fast_enabled = true;
init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
init.config.ble_adv_fast_timeout = APP_ADV_FAST_DURATION;
//err_code = sd_ble_gap_adv_stop(m_advertising.adv_handle);
//APP_ERROR_CHECK(err_code);
err_code = ble_advdata_encode(&init.advdata, m_adv_data.adv_data.p_data, &m_adv_data.adv_data.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);
}And of course... it's not working. :)
I'm getting a very strange error at sd_ble_gap_adv_set_configure() --> app: ERROR 12801 [Unknown error code]
Any idea why?
What I'm doing wrong?
What I have to change to get this working like in the SDK14.2?