This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

NRF 52832 BLE 5 Periodic Extended Advertising - Continuous BLE signal

Hi everyone,

I want to measure the strength signal of BLE of my device. I need to do this measure without connecting/paring my device to any other, just during advertising.

What I want to do is to generate extended advertising and if it's possible to be periodic too.

So my signal is as continuous as possible, trying to imitate that I'm sending a file, so this way I could measure the strength signal generated by my device.

At first I made my device be advertising and it was working but because the advertising are intervals the measure wasn't constant. I have modify my code to add the extended advertising but I did something wrong because I can't see my device when I scan for BT devices.

I'm using nRF52832 SoC, S132 6.1.1 version, SDK 15.3 version.

This is my code related to BLE:

-------------------------------------------

#define APP_BLE_CONN_CFG_TAG                                       1                                                                   

#define DEVICE_NAME                                                             "Test FW"                                                   
#define NUS_SERVICE_UUID_TYPE                                        BLE_UUID_TYPE_VENDOR_BEGIN         

#define APP_BLE_OBSERVER_PRIO                                       3                                                                 

#define APP_ADV_INTERVAL                                                    32                                                              

#define APP_ADV_DURATION                                                  18000                                                         

#define MIN_CONN_INTERVAL                                                 MSEC_TO_UNITS(20, UNIT_1_25_MS)   
#define MAX_CONN_INTERVAL                                               MSEC_TO_UNITS(75, UNIT_1_25_MS)  
#define SLAVE_LATENCY                                                         0                                                                 
#define CONN_SUP_TIMEOUT                                                MSEC_TO_UNITS(4000, UNIT_10_MS)   
#define FIRST_CONN_PARAMS_UPDATE_DELAY                APP_TIMER_TICKS(5000) 
#define NEXT_CONN_PARAMS_UPDATE_DELAY                 APP_TIMER_TICKS(30000)
#define MAX_CONN_PARAMS_UPDATE_COUNT                 3 

#define BLE_DIS_MANUFACTURER_NAME "NordicSemiconductor" 
#define BLE_DIS_MODEL_NUMBER "NRF5X" 
#define BLE_DIS_SERIAL_NUMBER "T0139836"
#define BLE_DIS_HW_REVISION "2016.42"
#define BLE_DIS_FW_REVISION "0.1.2" 
#define BLE_DIS_SW_REVISION "1.2.3" 
#define BLE_DIS_MANUFACTURER_ID 0x0000000059 
#define BLE_DIS_OU_ID 0x123456 
#define BLE_DIS_CERT_LIST {0x00, 0x01, 0x02, 0x03}
#define BLE_DIS_VENDOR_ID 0x0059
#define BLE_DIS_PRODUCT_ID 0x0001
#define BLE_DIS_PRODUCT_VERSION 0x0002

BLE_NUS_DEF(m_nus, NRF_SDH_BLE_TOTAL_LINK_COUNT);
NRF_BLE_GATT_DEF(m_gatt); 
NRF_BLE_QWR_DEF(m_qwr); 
BLE_ADVERTISING_DEF(m_advertising); 

static uint16_t m_conn_handle = BLE_CONN_HANDLE_INVALID;
static uint16_t m_ble_nus_max_data_len = BLE_GATT_ATT_MTU_DEFAULT - 3; 
static ble_uuid_t m_adv_uuids[] ={
{BLE_UUID_NUS_SERVICE, NUS_SERVICE_UUID_TYPE},{BLE_UUID_DEVICE_INFORMATION_SERVICE, BLE_UUID_TYPE_BLE}
};

static void gap_params_init(void)
{
uint32_t err_code;
ble_gap_conn_params_t gap_conn_params;
ble_gap_conn_sec_mode_t sec_mode;

BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode);

err_code = sd_ble_gap_device_name_set(&sec_mode,
(const uint8_t *) DEVICE_NAME,
strlen(DEVICE_NAME));
APP_ERROR_CHECK(err_code);

memset(&gap_conn_params, 0, sizeof(gap_conn_params));

gap_conn_params.min_conn_interval = MIN_CONN_INTERVAL;
gap_conn_params.max_conn_interval = MAX_CONN_INTERVAL;
gap_conn_params.slave_latency = SLAVE_LATENCY;
gap_conn_params.conn_sup_timeout = CONN_SUP_TIMEOUT;

err_code = sd_ble_gap_ppcp_set(&gap_conn_params);
APP_ERROR_CHECK(err_code);
}

static void services_init(void)
{
uint32_t err_code;
ble_nus_init_t nus_init;
ble_dis_init_t dis_init;
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);

// Initialize NUS.
memset(&nus_init, 0, sizeof(nus_init));

nus_init.data_handler = nus_data_handler;

err_code = ble_nus_init(&m_nus, &nus_init);
APP_ERROR_CHECK(err_code);

// Initialize Device Information Service.
ble_dis_sys_id_t sys_id;
ble_dis_pnp_id_t pnp_id;
ble_dis_reg_cert_data_list_t cert_list;
uint8_t cert_list_data[] = BLE_DIS_CERT_LIST;

memset(&dis_init, 0, sizeof(dis_init));

ble_srv_ascii_to_utf8(&dis_init.manufact_name_str, BLE_DIS_MANUFACTURER_NAME);
ble_srv_ascii_to_utf8(&dis_init.model_num_str, BLE_DIS_MODEL_NUMBER);
ble_srv_ascii_to_utf8(&dis_init.serial_num_str, BLE_DIS_SERIAL_NUMBER);
ble_srv_ascii_to_utf8(&dis_init.hw_rev_str, BLE_DIS_HW_REVISION);
ble_srv_ascii_to_utf8(&dis_init.fw_rev_str, BLE_DIS_FW_REVISION);
ble_srv_ascii_to_utf8(&dis_init.sw_rev_str, BLE_DIS_SW_REVISION);

sys_id.manufacturer_id = BLE_DIS_MANUFACTURER_ID;
sys_id.organizationally_unique_id = BLE_DIS_OU_ID;

cert_list.p_list = cert_list_data;
cert_list.list_len = sizeof(cert_list_data);

pnp_id.vendor_id_source = BLE_DIS_VENDOR_ID_SRC_BLUETOOTH_SIG;
pnp_id.vendor_id = BLE_DIS_VENDOR_ID;
pnp_id.product_id = BLE_DIS_PRODUCT_ID;
pnp_id.product_version = BLE_DIS_PRODUCT_VERSION;

dis_init.p_sys_id = &sys_id;
dis_init.p_reg_cert_data_list = &cert_list;
dis_init.p_pnp_id = &pnp_id;

dis_init.dis_char_rd_sec = SEC_OPEN;

err_code = ble_dis_init(&dis_init);
APP_ERROR_CHECK(err_code);

}

static void advertising_init(void)
{
uint32_t err_code;
ble_advertising_init_t init;
int8_t tx_power_level = 0;

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.p_tx_power_level = &tx_power_level;
// init.advdata.

sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, NULL, tx_power_level);

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.config.ble_adv_primary_phy = BLE_GAP_PHY_1MBPS;
init.config.ble_adv_secondary_phy = BLE_GAP_PHY_2MBPS;
init.config.ble_adv_extended_enabled = true;

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);
}

static void advertising_start(void)
{
uint32_t err_code = ble_advertising_start(&m_advertising, BLE_ADV_MODE_FAST);
APP_ERROR_CHECK(err_code);
}

Parents Reply Children
No Data
Related