]> granicus.if.org Git - esp-idf/commitdiff
component/bt : add BR/EDR TX power set
authorTian Hao <tianhao@espressif.com>
Thu, 19 Apr 2018 09:22:49 +0000 (17:22 +0800)
committerTian Hao <tianhao@espressif.com>
Wed, 25 Apr 2018 07:28:19 +0000 (15:28 +0800)
components/bt/bt.c
components/bt/include/esp_bt.h
components/bt/lib

index 0a69d40b41582e752a6cc545e9ae32894e0c1ec6..1b92a20cc95c1bdcb4f0c8673774fbecfca96e3f 100644 (file)
@@ -72,6 +72,8 @@ extern void API_vhci_host_register_callback(const vhci_host_callback_t *callback
 
 extern int ble_txpwr_set(int power_type, int power_level);
 extern int ble_txpwr_get(int power_type);
+extern int bredr_txpwr_set(int min_power_level, int max_power_level);
+extern int bredr_txpwr_get(int *min_power_level, int *max_power_level);
 
 extern char _bss_start_btdm;
 extern char _bss_end_btdm;
@@ -614,4 +616,31 @@ esp_power_level_t esp_ble_tx_power_get(esp_ble_power_type_t power_type)
     return (esp_power_level_t)ble_txpwr_get(power_type);
 }
 
+esp_err_t esp_bredr_tx_power_set(esp_power_level_t min_power_level, esp_power_level_t max_power_level)
+{
+    esp_err_t err;
+    int ret;
+
+    ret = bredr_txpwr_set(min_power_level, max_power_level);
+
+    if (ret == 0) {
+        err = ESP_OK;
+    } else if (ret == -1) {
+        err = ESP_ERR_INVALID_ARG;
+    } else {
+        err = ESP_ERR_INVALID_STATE;
+    }
+
+    return err;
+}
+
+esp_err_t esp_bredr_tx_power_get(esp_power_level_t *min_power_level, esp_power_level_t *max_power_level)
+{
+    if (bredr_txpwr_get((int *)min_power_level, (int *)max_power_level) != 0) {
+        return ESP_ERR_INVALID_ARG;
+    }
+
+    return ESP_OK;
+}
+
 #endif /*  CONFIG_BT_ENABLED */
index a907765d20452e93c178b2da70cc832fbd639ad8..0d85465e1645de117d16f295d2d1bf62cc5b0e56 100644 (file)
@@ -139,6 +139,31 @@ esp_err_t esp_ble_tx_power_set(esp_ble_power_type_t power_type, esp_power_level_
  */
 esp_power_level_t esp_ble_tx_power_get(esp_ble_power_type_t power_type);
 
+/**
+ * @brief  Set BR/EDR TX power
+ *         BR/EDR power control will use the power in range of minimum value and maximum value.
+ *         The power level will effect the global BR/EDR TX power, such inquire, page, connection and so on.
+ *         Please call the function after esp_bt_controller_enable and before any function which cause RF do TX.
+ *         So you can call the function can before do discover, beofre profile init and so on.
+ *         For example, if you want BR/EDR use the new TX power to do inquire, you should call
+ *         this function before inquire. Another word, If call this function when BR/EDR is in inquire(ING),
+ *         please do inquire again after call this function.
+ *         Default minimum power level is ESP_PWR_LVL_N2, and maximum power level is ESP_PWR_LVL_P1.
+ * @param  min_power_level: The minimum power level
+ * @param  max_power_level: The maximum power level
+ * @return              ESP_OK - success, other - failed
+ */
+esp_err_t esp_bredr_tx_power_set(esp_power_level_t min_power_level, esp_power_level_t max_power_level);
+
+/**
+ * @brief  Get BR/EDR TX power
+ *         If the argument is not NULL, then store the corresponding value.
+ * @param  min_power_level: The minimum power level
+ * @param  max_power_level: The maximum power level
+ * @return              ESP_OK - success, other - failed
+ */
+esp_err_t esp_bredr_tx_power_get(esp_power_level_t *min_power_level, esp_power_level_t *max_power_level);
+
 
 /**
  * @brief  Initialize BT controller to allocate task and other resource.
index 74a772d0b88271d6161d0e61e4c358030a001ab5..d1e2bce5585b2aded165a886aced8dacfbac9dee 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 74a772d0b88271d6161d0e61e4c358030a001ab5
+Subproject commit d1e2bce5585b2aded165a886aced8dacfbac9dee