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?