nvs_handle fp;
err = nvs_open(filename, NVS_READWRITE, &fp);
if (err != ESP_OK) {
- LOG_ERROR("%s unable to open file '%s'\n", __func__, filename);
+ if (err == ESP_ERR_NVS_NOT_INITIALIZED) {
+ LOG_ERROR("%s: NVS not initialized. "
+ "Call nvs_flash_init before initializing bluetooth.", __func__);
+ } else {
+ LOG_ERROR("%s unable to open NVS namespace '%s'\n", __func__, filename);
+ }
config_free(config);
return NULL;
}
err = nvs_open(filename, NVS_READWRITE, &fp);
if (err != ESP_OK) {
+ if (err == ESP_ERR_NVS_NOT_INITIALIZED) {
+ LOG_ERROR("%s: NVS not initialized. "
+ "Call nvs_flash_init before initializing bluetooth.", __func__);
+ }
err_code |= 0x02;
goto error;
}
esp_err_t esp_phy_load_cal_data_from_nvs(esp_phy_calibration_data_t* out_cal_data)
{
- esp_err_t err = nvs_flash_init();
- if (err != ESP_OK) {
- ESP_LOGW(TAG, "%s: failed to initialize NVS (0x%x)", __func__, err);
- return err;
- }
nvs_handle handle;
- err = nvs_open(PHY_NAMESPACE, NVS_READONLY, &handle);
- if (err != ESP_OK) {
+ esp_err_t err = nvs_open(PHY_NAMESPACE, NVS_READONLY, &handle);
+ if (err == ESP_ERR_NVS_NOT_INITIALIZED) {
+ ESP_LOGE(TAG, "%s: NVS has not been initialized. "
+ "Call nvs_flash_init before starting WiFi/BT.", __func__);
+ } else if (err != ESP_OK) {
ESP_LOGD(TAG, "%s: failed to open NVS namespace (0x%x)", __func__, err);
return err;
}
- else {
- err = load_cal_data_from_nvs_handle(handle, out_cal_data);
- nvs_close(handle);
- return err;
- }
+ err = load_cal_data_from_nvs_handle(handle, out_cal_data);
+ nvs_close(handle);
+ return err;
}
esp_err_t esp_phy_store_cal_data_to_nvs(const esp_phy_calibration_data_t* cal_data)
extern "C" {
#endif
+#include "nvs.h"
+
/**
* @brief Initialize NVS flash storage with layout given in the partition table.
*
esp_err_t nvs_flash_init(void);
+/**
+ * @brief Erase NVS partition
+ *
+ * This function erases all contents of NVS partition
+ *
+ * @return
+ * - ESP_OK on success
+ * - ESP_ERR_NOT_FOUND if there is no NVS partition in the partition table
+ */
+esp_err_t nvs_flash_erase(void);
+
#ifdef __cplusplus
}
#endif
return nvs_flash_init_custom(partition->address / SPI_FLASH_SEC_SIZE,
partition->size / SPI_FLASH_SEC_SIZE);
}
+
+extern "C" esp_err_t nvs_flash_erase()
+{
+ const esp_partition_t* partition = esp_partition_find_first(
+ ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, NULL);
+ if (partition == NULL) {
+ return ESP_ERR_NOT_FOUND;
+ }
+
+ return esp_partition_erase_range(partition, 0, partition->size);
+}
#endif
static esp_err_t nvs_find_ns_handle(nvs_handle handle, HandleEntry& entry)
void app_main()
{
- nvs_flash_init();
+ /* Initialize NVS — it is used to store PHY calibration data */
+ esp_err_t ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
if (esp_bt_controller_init(&bt_cfg) != ESP_OK) {
#include "freertos/task.h"
#include "bt.h"
#include "esp_log.h"
+#include "nvs_flash.h"
static const char *tag = "BLE_ADV";
void app_main()
{
+ /* Initialize NVS — it is used to store PHY calibration data */
+ esp_err_t ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
if (esp_bt_controller_init(&bt_cfg) != ESP_OK) {
{
esp_err_t ret;
- ESP_ERROR_CHECK( nvs_flash_init() );
+ // Initialize NVS
+ ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
initialise_wifi();
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
#include <stdio.h>
#include <string.h>
-
+#include "nvs.h"
#include "bt.h"
#include "driver/uart.h"
#include "esp_log.h"
{
esp_err_t ret;
+ /* Initialize NVS — it is used to store PHY calibration data */
+ ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
+
/* As the UART1/2 pin conflict with flash pin, so do matrix of the signal and pin */
uart_gpio_reset();
#include <string.h>
#include <stdbool.h>
#include <stdio.h>
+#include "nvs.h"
+#include "nvs_flash.h"
#include "controller.h"
#include "bt.h"
void app_main()
{
+ // Initialize NVS.
+ esp_err_t ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
esp_bt_controller_init(&bt_cfg);
esp_bt_controller_enable(ESP_BT_MODE_BTDM);
void app_main()
{
esp_err_t ret;
+
+ // Initialize NVS.
+ ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
ret = esp_bt_controller_init(&bt_cfg);
if (ret) {
{
esp_err_t ret;
+ // Initialize NVS.
+ ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
ret = esp_bt_controller_init(&bt_cfg);
if (ret) {
{
esp_err_t ret;
+ // Initialize NVS.
+ ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
ret = esp_bt_controller_init(&bt_cfg);
if (ret) {
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
-#include "esp_partition.h"
#include "nvs_flash.h"
#include "nvs.h"
#include "driver/gpio.h"
esp_err_t err = nvs_flash_init();
if (err == ESP_ERR_NVS_NO_FREE_PAGES) {
// NVS partition was truncated and needs to be erased
- const esp_partition_t* nvs_partition = esp_partition_find_first(
- ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, NULL);
- assert(nvs_partition && "partition table must have an NVS partition");
- ESP_ERROR_CHECK( esp_partition_erase_range(nvs_partition, 0, nvs_partition->size) );
// Retry nvs_flash_init
+ ESP_ERROR_CHECK(nvs_flash_erase());
err = nvs_flash_init();
}
ESP_ERROR_CHECK( err );
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
-#include "esp_partition.h"
#include "nvs_flash.h"
#include "nvs.h"
esp_err_t err = nvs_flash_init();
if (err == ESP_ERR_NVS_NO_FREE_PAGES) {
// NVS partition was truncated and needs to be erased
- const esp_partition_t* nvs_partition = esp_partition_find_first(
- ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, NULL);
- assert(nvs_partition && "partition table must have an NVS partition");
- ESP_ERROR_CHECK( esp_partition_erase_range(nvs_partition, 0, nvs_partition->size) );
// Retry nvs_flash_init
+ ESP_ERROR_CHECK(nvs_flash_erase());
err = nvs_flash_init();
}
ESP_ERROR_CHECK( err );
#include "esp_event_loop.h"
#include "esp_log.h"
#include "esp_ota_ops.h"
-#include "esp_partition.h"
#include "nvs.h"
#include "nvs_flash.h"
// OTA app partition table has a smaller NVS partition size than the non-OTA
// partition table. This size mismatch may cause NVS initialization to fail.
// If this happens, we erase NVS partition and initialize NVS again.
- const esp_partition_t* nvs_partition = esp_partition_find_first(
- ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, NULL);
- assert(nvs_partition && "partition table must have an NVS partition");
- ESP_ERROR_CHECK( esp_partition_erase_range(nvs_partition, 0, nvs_partition->size) );
+ ESP_ERROR_CHECK(nvs_flash_erase());
err = nvs_flash_init();
}
ESP_ERROR_CHECK( err );
#include "esp_wifi.h"
#include "esp_log.h"
#include "esp_event_loop.h"
+#include "nvs_flash.h"
/*set the ssid and password via "make menuconfig"*/
#define DEFAULT_SSID CONFIG_WIFI_SSID
void app_main()
{
+ // Initialize NVS
+ esp_err_t ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
wifi_power_save();
}
#include "esp_log.h"
#include "esp_wps.h"
#include "esp_event_loop.h"
+#include "nvs_flash.h"
/*set wps mode via "make menuconfig"*/
void app_main()
{
+ /* Initialize NVS — it is used to store PHY calibration data */
+ esp_err_t ret = nvs_flash_init();
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+ ESP_ERROR_CHECK(nvs_flash_erase());
+ ret = nvs_flash_init();
+ }
+ ESP_ERROR_CHECK( ret );
+
start_wps();
}