const esp_phy_calibration_data_t* cal_data)
{
esp_err_t err;
- uint32_t cal_format_version = phy_get_rf_cal_version() & (~BIT(16));
- ESP_LOGV(TAG, "phy_get_rf_cal_version: %d\n", cal_format_version);
- err = nvs_set_u32(handle, PHY_CAL_VERSION_KEY, cal_format_version);
+
+ err = nvs_set_blob(handle, PHY_CAL_DATA_KEY, cal_data, sizeof(*cal_data));
if (err != ESP_OK) {
+ ESP_LOGE(TAG, "%s: store calibration data failed(0x%x)\n", __func__, err);
return err;
}
+
uint8_t sta_mac[6];
esp_efuse_mac_get_default(sta_mac);
err = nvs_set_blob(handle, PHY_CAL_MAC_KEY, sta_mac, sizeof(sta_mac));
if (err != ESP_OK) {
+ ESP_LOGE(TAG, "%s: store calibration mac failed(0x%x)\n", __func__, err);
return err;
}
- err = nvs_set_blob(handle, PHY_CAL_DATA_KEY, cal_data, sizeof(*cal_data));
+
+ uint32_t cal_format_version = phy_get_rf_cal_version() & (~BIT(16));
+ ESP_LOGV(TAG, "phy_get_rf_cal_version: %d\n", cal_format_version);
+ err = nvs_set_u32(handle, PHY_CAL_VERSION_KEY, cal_format_version);
+ if (err != ESP_OK) {
+ ESP_LOGE(TAG, "%s: store calibration version failed(0x%x)\n", __func__, err);
+ return err;
+ }
+
+ err = nvs_commit(handle);
+ if (err != ESP_OK) {
+ ESP_LOGE(TAG, "%s: store calibration nvs commit failed(0x%x)\n", __func__, err);
+ }
+
return err;
}
abort();
}
-#ifdef CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE
- esp_phy_calibration_mode_t calibration_mode = PHY_RF_CAL_PARTIAL;
- if (rtc_get_reset_reason(0) == DEEPSLEEP_RESET) {
- calibration_mode = PHY_RF_CAL_NONE;
- }
const esp_phy_init_data_t* init_data = esp_phy_get_init_data();
if (init_data == NULL) {
ESP_LOGE(TAG, "failed to obtain PHY init data");
abort();
}
+#ifdef CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE
+ esp_phy_calibration_mode_t calibration_mode = PHY_RF_CAL_PARTIAL;
+ if (rtc_get_reset_reason(0) == DEEPSLEEP_RESET) {
+ calibration_mode = PHY_RF_CAL_NONE;
+ }
+
esp_err_t err = esp_phy_load_cal_data_from_nvs(cal_data);
if (err != ESP_OK) {
ESP_LOGW(TAG, "failed to load RF calibration data (0x%x), falling back to full calibration", err);
}
esp_phy_release_init_data(init_data);
#else
- esp_phy_rf_init(NULL, PHY_RF_CAL_FULL, cal_data);
+ esp_phy_rf_init(init_data, PHY_RF_CAL_FULL, cal_data);
#endif
free(cal_data); // PHY maintains a copy of calibration data, so we can free this