]> granicus.if.org Git - esp-idf/commitdiff
esp32: fix the bug that the first two reboots do full calibration
authorLiu Zhi Fu <liuzhifu@espressif.com>
Tue, 12 Jun 2018 07:51:51 +0000 (15:51 +0800)
committerLiu Zhi Fu <liuzhifu@espressif.com>
Tue, 12 Jun 2018 07:51:51 +0000 (15:51 +0800)
If the NVS is erased, the first two reboots will do full calibration.
This commit is to fix this issue and only need to do full calibration once.

components/esp32/phy_init.c

index d730e01c6b38c9e18af0d708104c7791b309c4d0..2da98c31b011da539c96c766360b973a07ccb68b 100644 (file)
@@ -493,7 +493,6 @@ static esp_err_t load_cal_data_from_nvs_handle(nvs_handle handle,
         ESP_LOGD(TAG, "%s: invalid length of cal_data (%d)", __func__, length);
         return ESP_ERR_INVALID_SIZE;
     }
-    memcpy(out_cal_data->mac, sta_mac, 6);
     return ESP_OK;
 }
 
@@ -549,6 +548,7 @@ void esp_phy_load_cal_and_init(phy_rf_module_t module)
 
 #ifdef CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE
     esp_phy_calibration_mode_t calibration_mode = PHY_RF_CAL_PARTIAL;
+    uint8_t sta_mac[6];
     if (rtc_get_reset_reason(0) == DEEPSLEEP_RESET) {
         calibration_mode = PHY_RF_CAL_NONE;
     }
@@ -558,6 +558,8 @@ void esp_phy_load_cal_and_init(phy_rf_module_t module)
         calibration_mode = PHY_RF_CAL_FULL;
     }
 
+    esp_efuse_mac_get_default(sta_mac);
+    memcpy(cal_data->mac, sta_mac, 6);
     esp_phy_rf_init(init_data, calibration_mode, cal_data, module);
 
     if (calibration_mode != PHY_RF_CAL_NONE && err != ESP_OK) {