Can i change the antenna power with software?
Do you mean the radio's transmit power?
You can set that by calling sd_ble_gap_tx_power_set().
For SoftDevice S132 V6.1.0, the API is:
/**@brief Set the radio's transmit power.
* @param[in] role The role to set the transmit power for, see @ref BLE_GAP_TX_POWER_ROLES for
* possible roles.
* @param[in] handle The handle parameter is interpreted depending on role:
* - If role is @ref BLE_GAP_TX_POWER_ROLE_CONN, this value is the specific connection handle.
* - If role is @ref BLE_GAP_TX_POWER_ROLE_ADV, the advertising set identified with the advertising handle,
* will use the specified transmit power, and include it in the advertising packet headers if
* @ref ble_gap_adv_properties_t::include_tx_power set.
* - For all other roles handle is ignored.
* @param[in] tx_power Radio transmit power in dBm (see note for accepted values).
* @note Supported tx_power values: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm.
* @note The initiator will have the same transmit power as the scanner.
* @note When a connection is created it will inherit the transmit power from the initiator or
* advertiser leading to the connection.
* @retval ::NRF_SUCCESS Successfully changed the transmit power.
* @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
* @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found.
* @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(uint8_t role, uint16_t handle, int8_t tx_power));
Thanks for your answer. Yes i mean the radio's transmit power. i found that code block. But i don't understand how can i change it.
Are you advertising? Or scanning?
If you are advertising, you can take a look at the examples\ble_peripheral\ble_app_proximity example.
Here, you can see how the API is used:
sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, m_advertising.adv_handle, TX_POWER_LEVEL);
The first input is BLE_GAP_TX_POWER_ROLE_ADV, which is one of three options from BLE_GAP_TX_POWER_ROLES, as you can read here:
/**@brief GAP TX Power roles.
BLE_GAP_TX_POWER_ROLE_ADV = 1, /**< Advertiser role. */
BLE_GAP_TX_POWER_ROLE_SCAN_INIT = 2, /**< Scanner and initiator role. */
BLE_GAP_TX_POWER_ROLE_CONN = 3, /**< Connection role. */
The second input is the advertising handle, m_advertising.adv_handle. If you are scanning you should give NULL as input, and if you are connected, you should give the connection handle as input.
The third input is the actual TX power value, and the supported values are -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm.
Thanks for your answer Andrea.
I'm advertising. I'm using the nordic uart service. Firstly when i tried the xamples\ble_peripheral\ble_app_proximity code i see that error massage.How can i fix this?
It tells you that it can't open the file.
So does that file actually exist in that location?
Did the build succeed?
I just openned the file in sdk.
Do you have a licence for Keil u5? Have you installed the latest J-Link drivers?
No - look again at the message: it tells you specifically which file it failed to open.
It's the .axf file - which is the result of a successful build.
Therefore, if the build failed, or you have not done a build at all - you are going to get that message!
The download will fail if there is nothing to download!
AndreasF said:Do you have a licence for Keil u5? Have you installed the latest J-Link drivers?
Those things would give different errors - It's complaining that it can't find the .axf file.
(although lack of a licence could be a reason for the build to fail and, therefore, not generate the .axf)