Hi Everyone,
I am using nRF52832 with SDK v14.2 and SD v5.0.0 on a custom chip.
I want to advertise 2 custom UUID (DFU and NUS) and i wanted to know the correct way to do it. I understand that advertisement packet is 31 bytes and so is scan response packet. So, having one custom UUID on advertisement packet and the other on scan response packet makes sense since custom UUID is 16 bytes long.
I did the same way and with nRF connect app i can see both services but when i sniffed for the packets being transmitted, i saw only one UUID there.
I have attached the code here for a look. I have also attached sniffer trace for advertisement and scan response packet for your reference. Please advise why is it not advertising NUS UUID and still be able to detect by the nRF connect app when connected?
.
ret_code_t advertising_init(void) { ret_code_t u32ErrCode = NRF_SUCCESS; ble_uuid_t astAdvUuids[] = /**< Universally unique service identifier. */ { {BLE_DFU_UUID, DFU_SERVICE_UUID_TYPE}, {BLE_UUID_NUS_SERVICE, NUS_SERVICE_UUID_TYPE} }; ble_advertising_init_t stInit; memset(&stInit, 0, sizeof(stInit)); stInit.advdata.name_type = BLE_ADVDATA_FULL_NAME; stInit.advdata.include_appearance = false; stInit.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE; stInit.advdata.uuids_complete.uuid_cnt = 1; stInit.advdata.uuids_complete.p_uuids = &astAdvUuids[0]; stInit.srdata.uuids_more_available.uuid_cnt = 1; stInit.srdata.uuids_more_available.p_uuids = &astAdvUuids[1]; stInit.config.ble_adv_fast_enabled = true; stInit.config.ble_adv_fast_interval = APP_ADV_INTERVAL; stInit.config.ble_adv_fast_timeout = APP_ADV_TIMEOUT_IN_SECONDS; stInit.evt_handler = on_adv_evt; u32ErrCode = ble_advertising_init(&m_advertising, &stInit); APP_ERROR_CHECK(u32ErrCode); ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG); //nfc ble pair library init nrf_ble_pairing_init(&m_advertising); return u32ErrCode; }
Thank you!