Merge branch 'feature/add_limitation_for_max_tx_power' into 'master'

esp_wifi: add limitation for setting maximum WiFi TX power

See merge request idf/esp-idf!5331
This commit is contained in:
Jiang Jiang Jian 2019-06-28 11:18:11 +08:00
commit 936720d3ef
4 changed files with 13 additions and 51 deletions

View file

@ -353,7 +353,7 @@ menu PHY
config ESP32_PHY_MAX_WIFI_TX_POWER config ESP32_PHY_MAX_WIFI_TX_POWER
int "Max WiFi TX power (dBm)" int "Max WiFi TX power (dBm)"
range 0 20 range 10 20
default 20 default 20
help help
Set maximum transmit power for WiFi radio. Actual transmit power for high Set maximum transmit power for WiFi radio. Actual transmit power for high

View file

@ -77,12 +77,12 @@ static const esp_phy_init_data_t phy_init_data= { {
0x18, 0x18,
0x18, 0x18,
0x18, 0x18,
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 0, 78), LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 78),
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 0, 72), LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 72),
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 0, 66), LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 66),
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 0, 60), LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 60),
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 0, 56), LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 56),
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 0, 52), LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 52),
0, 0,
1, 1,
1, 1,

View file

@ -581,7 +581,7 @@ esp_err_t esp_wifi_get_channel(uint8_t *primary, wifi_second_chan_t *second);
* and the country info of the AP to which the station is connected is {.cc="JP", .schan=1, .nchan=14} * and the country info of the AP to which the station is connected is {.cc="JP", .schan=1, .nchan=14}
* then the country info that will be used is {.cc="JP", .schan=1, .nchan=14}. If the station disconnected * then the country info that will be used is {.cc="JP", .schan=1, .nchan=14}. If the station disconnected
* from the AP the country info is set back back to the country info of the station automatically, * from the AP the country info is set back back to the country info of the station automatically,
* {.cc="USA", .schan=1, .nchan=11} in the example. * {.cc="US", .schan=1, .nchan=11} in the example.
* @attention 3. When the country policy is WIFI_COUNTRY_POLICY_MANUAL, always use the configured country info. * @attention 3. When the country policy is WIFI_COUNTRY_POLICY_MANUAL, always use the configured country info.
* @attention 4. When the country info is changed because of configuration or because the station connects to a different * @attention 4. When the country info is changed because of configuration or because the station connects to a different
* external AP, the country IE in probe response/beacon of the soft-AP is changed also. * external AP, the country IE in probe response/beacon of the soft-AP is changed also.
@ -881,60 +881,22 @@ typedef void (*esp_vendor_ie_cb_t) (void *ctx, wifi_vendor_ie_type_t type, const
esp_err_t esp_wifi_set_vendor_ie_cb(esp_vendor_ie_cb_t cb, void *ctx); esp_err_t esp_wifi_set_vendor_ie_cb(esp_vendor_ie_cb_t cb, void *ctx);
/** /**
* @brief Set maximum WiFi transmiting power * @brief Set maximum WiFi transmitting power
* *
* @attention WiFi transmiting power is divided to six levels in phy init data. * @param power Maximum WiFi transmitting power, unit is 0.25dBm, range is [40, 82] corresponding to 10dBm - 20.5dBm here.
* Level0 represents highest transmiting power and level5 represents lowest
* transmiting power. Packets of different rates are transmitted in
* different powers according to the configuration in phy init data.
* This API only sets maximum WiFi transmiting power. If this API is called,
* the transmiting power of every packet will be less than or equal to the
* value set by this API. If this API is not called, the value of maximum
* transmitting power set in phy_init_data.bin or menuconfig (depend on
* whether to use phy init data in partition or not) will be used. Default
* value is level0. Values passed in power are mapped to transmit power
* levels as follows:
* - [78, 127]: level0
* - [76, 77]: level1
* - [74, 75]: level2
* - [68, 73]: level3
* - [60, 67]: level4
* - [52, 59]: level5
* - [44, 51]: level5 - 2dBm
* - [34, 43]: level5 - 4.5dBm
* - [28, 33]: level5 - 6dBm
* - [20, 27]: level5 - 8dBm
* - [8, 19]: level5 - 11dBm
* - [-128, 7]: level5 - 14dBm
*
* @param power Maximum WiFi transmiting power.
* *
* @return * @return
* - ESP_OK: succeed * - ESP_OK: succeed
* - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init * - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init
* - ESP_ERR_WIFI_NOT_START: WiFi is not started by esp_wifi_start * - ESP_ERR_WIFI_NOT_START: WiFi is not started by esp_wifi_start
* - ESP_ERR_WIFI_NOT_ARG: invalid argument
*/ */
esp_err_t esp_wifi_set_max_tx_power(int8_t power); esp_err_t esp_wifi_set_max_tx_power(int8_t power);
/** /**
* @brief Get maximum WiFi transmiting power * @brief Get maximum WiFi transmiting power
* *
* @attention This API gets maximum WiFi transmiting power. Values got * @param power Maximum WiFi transmitting power, unit is 0.25dBm.
* from power are mapped to transmit power levels as follows:
* - 78: 19.5dBm
* - 76: 19dBm
* - 74: 18.5dBm
* - 68: 17dBm
* - 60: 15dBm
* - 52: 13dBm
* - 44: 11dBm
* - 34: 8.5dBm
* - 28: 7dBm
* - 20: 5dBm
* - 8: 2dBm
* - -4: -1dBm
*
* @param power Maximum WiFi transmiting power.
* *
* @return * @return
* - ESP_OK: succeed * - ESP_OK: succeed

View file

@ -50,7 +50,7 @@ typedef struct {
char cc[3]; /**< country code string */ char cc[3]; /**< country code string */
uint8_t schan; /**< start channel */ uint8_t schan; /**< start channel */
uint8_t nchan; /**< total channel number */ uint8_t nchan; /**< total channel number */
int8_t max_tx_power; /**< maximum tx power */ int8_t max_tx_power; /**< This field is used for getting WiFi maximum transmitting power, call esp_wifi_set_max_tx_power to set the maximum transmitting power. */
wifi_country_policy_t policy; /**< country policy */ wifi_country_policy_t policy; /**< country policy */
} wifi_country_t; } wifi_country_t;