Hello
I'm using SDK 15, S132 PCA10040
I have followed this tut.
I've tried 2 scenarios which in both I get error value:
1. when advertising_init() is before services_init() then advertising_init()->ble_advertising_init()->ble_advdata_set->()ble_advdata_encode() returns NRF_ERROR_INVALID_PARAM (#7).
2. when services_init() is before advertising_init() then advertising_init()->ble_advertising_init()->ble_advdata_set->()sd_ble_gap_adv_data_set() returns NRF_ERROR_INVALID_ADDR (#16).
I've been looking in few FAQ's but couldn't find the answer.
Application's definitions and declaration:
#define BLE_UUID_OUR_BASE_UUID {0xD8,0xD0,0xAA,0x28,0x10,0x7E,0x58,0x73,0x30,0xF0,0x5E,0x9A,0xFB,0xCA,0x13,0x89}
#define BLE_UUID_OUR_SERVICE 0x04AE
static ble_uuid_t m_adv_uuids[] = /**< Universally unique service identifiers. */
{
{BLE_UUID_OUR_SERVICE, BLE_UUID_TYPE_VENDOR_BEGIN}
};
services_init() and our_service_init() functions
static void services_init(void)
{
ret_code_t err_code;
nrf_ble_qwr_init_t qwr_init = {0};
// Initialize Queued Write Module.
qwr_init.error_handler = nrf_qwr_error_handler;
err_code = nrf_ble_qwr_init(&m_qwr, &qwr_init);
APP_ERROR_CHECK(err_code);
our_service_init(m_adv_uuids);
}
void our_service_init(ble_uuid_t * p_our_service)
{
uint32_t err_code;// Variable to hold return codes from library and softdevice functions
// OUR_JOB: Declare 16-bit service and 128-bit base UUIDs and add them to the BLE stack
ble_uuid_t service_uuid;
ble_uuid128_t base_uuid = BLE_UUID_OUR_BASE_UUID;
service_uuid.uuid = BLE_UUID_OUR_SERVICE;
err_code = sd_ble_uuid_vs_add(&base_uuid, &service_uuid.type);
APP_ERROR_CHECK(err_code);
}
advertising_init() function:
static void advertising_init(void)
{
ret_code_t err_code;
ble_advertising_init_t init;
memset(&init, 0, sizeof(init));
init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
init.advdata.include_appearance = true;
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;
init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
init.srdata.uuids_complete.p_uuids = m_adv_uuids;
init.config.ble_adv_fast_enabled = true;
init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
init.config.ble_adv_fast_timeout = APP_ADV_DURATION;
init.evt_handler = on_adv_evt;
err_code = ble_advertising_init(&m_advertising, &init);
APP_ERROR_CHECK(err_code);
ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
}
Please help me understand what is wrong here.
Thanks in advance.