in NUS ble pheripheral example where actually tx power is set?
in NUS ble pheripheral example where actually tx power is set?
Hi,
For TX Power, you can call
bt_hci_cmd_send_sync(BT_HCI_OP_VS_WRITE_TX_POWER_LEVEL, buf, &rsp);
Also, have a look at this sample github.com/.../hci_pwr_ctrl for the usage.
You can call the function in a thread after it's connected.
Regards,
Amanda
will nrf52840 supprots all the power levels ? -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm.
* In addition, on some chips following values are supported: +2dBm, +5dBm, +6dBm, +7dBm and +8dBm.
will nrf52840 supprots all the power levels ? -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm.
* In addition, on some chips following values are supported: +2dBm, +5dBm, +6dBm, +7dBm and +8dBm.
static void advertising_init(void)
{
int8_t tx_power_level = 4;
uint32_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 = false;
// init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;
init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
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_fast_timeout = 0;
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);
err_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, m_advertising.adv_handle, tx_power_level);
APP_ERROR_CHECK(err_code);
}
i have set the transmit power to 4dbm but if i see the rssi level in nrf connect app its showing -45dbm when i am near to the device will it be set to 4dbm or not? is this the way to set the transmit power?
int8_t tx_power_level = 4;
err_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, m_advertising.adv_handle, tx_power_level);
APP_ERROR_CHECK(err_code);
will this increases the transmission range?
Hi,
In general, increased TX output power will give better coverage if all other parameters are kept constant. If the transmitter and receiver are very close to each others, you may not see a large difference in the received signal strength. The range will depend on many factors, including output power, receiver sensitivity, environment, noise, etc. You can have a look at the range estimator from Bluetooth SIG, where you can input your parameters to get an estimate.
You can take look at the ble_app_proximity example, the sd_ble_gap_tx_power_set function is only set as part of advertising_start(). If you're using it as part of advertising_init() you'll have to uninit and reinitialize the advertising before you start advertising every time. You can also just set it as part of advertising_start() and not advertising_init().
-Amanda