Hi,
Function call to > err_code = ble_advdata_set(&advdata, NULL);
returns always err_code = 7 (NRF_ERROR_INVALID_PARAMETER) for a 128 bit UUID type (BLE_UUID_TYPE_VENDOR_BEGIN).
For 16 bit UUID types it works fine. Here is the code:
#define UUID_128 1
static void advertising_init(void)
{
uint32_t err_code;
ble_advdata_t advdata;
uint8_t flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
ble_uuid_t adv_uuids[] =
{
#ifdef UUID_128
{BLE_UUID_ANCS_SERVICE, BLE_UUID_TYPE_VENDOR_BEGIN},
#else
{BLE_UUID_ANCS_SERVICE, BLE_UUID_TYPE_BLE},
#endif
};
// Build and set advertising data
memset(&advdata, 0, sizeof(advdata));
advdata.name_type = BLE_ADVDATA_NO_NAME;
advdata.include_appearance = true;
advdata.flags.size = sizeof(flags);
advdata.flags.p_data = &flags;
advdata.uuids_complete.uuid_cnt = sizeof(adv_uuids) / sizeof(adv_uuids[0]);
advdata.uuids_complete.p_uuids = adv_uuids;
err_code = ble_advdata_set(&advdata, NULL);
sprintf(BUFFER, "err_code := %d in %s \n\r", (int)err_code, __FUNCTION__);
DEBUGF(BUFFER);
APP_ERROR_CHECK(err_code);
// Initialise advertising parameters (used when starting advertising)
memset(&m_adv_params, 0, sizeof(m_adv_params));
m_adv_params.type = BLE_GAP_ADV_TYPE_ADV_IND;
m_adv_params.p_peer_addr = NULL; // Undirected advertisement
m_adv_params.fp = BLE_GAP_ADV_FP_ANY;
m_adv_params.interval = APP_ADV_INTERVAL;
m_adv_params.timeout = APP_ADV_TIMEOUT_IN_SECONDS;
}
questions:
- what I am doing wrong?
- documentation says octets 12-13 to use from 128 bit UUID. does it count by starting at 0?
Yalcin