68 lines
2.3 KiB
C
68 lines
2.3 KiB
C
#include <stdio.h>
|
|
#include "FluxSpifs.h"
|
|
#include "esp_log.h"
|
|
|
|
static const char *TAG = "spifs_example";
|
|
void spifs_init(void)
|
|
{
|
|
ESP_LOGI(TAG, "Initializing SPIFFS");
|
|
|
|
esp_vfs_spiffs_conf_t conf = {
|
|
.base_path = "/spiffs",
|
|
.partition_label = NULL,
|
|
.max_files = 5,
|
|
.format_if_mount_failed = true
|
|
};
|
|
|
|
// Use settings defined above to initialize and mount SPIFFS filesystem.
|
|
// Note: esp_vfs_spiffs_register is an all-in-one convenience function.
|
|
esp_err_t ret = esp_vfs_spiffs_register(&conf);
|
|
|
|
if (ret != ESP_OK) {
|
|
if (ret == ESP_FAIL) {
|
|
ESP_LOGE(TAG, "Failed to mount or format filesystem");
|
|
} else if (ret == ESP_ERR_NOT_FOUND) {
|
|
ESP_LOGE(TAG, "Failed to find SPIFFS partition");
|
|
} else {
|
|
ESP_LOGE(TAG, "Failed to initialize SPIFFS (%s)", esp_err_to_name(ret));
|
|
}
|
|
return;
|
|
}
|
|
|
|
#ifdef CONFIG_EXAMPLE_SPIFFS_CHECK_ON_START
|
|
ESP_LOGI(TAG, "Performing SPIFFS_check().");
|
|
ret = esp_spiffs_check(conf.partition_label);
|
|
if (ret != ESP_OK) {
|
|
ESP_LOGE(TAG, "SPIFFS_check() failed (%s)", esp_err_to_name(ret));
|
|
return;
|
|
} else {
|
|
ESP_LOGI(TAG, "SPIFFS_check() successful");
|
|
}
|
|
#endif
|
|
|
|
size_t total = 0, used = 0;
|
|
ret = esp_spiffs_info(conf.partition_label, &total, &used);
|
|
if (ret != ESP_OK) {
|
|
ESP_LOGE(TAG, "Failed to get SPIFFS partition information (%s). Formatting...", esp_err_to_name(ret));
|
|
esp_spiffs_format(conf.partition_label);
|
|
return;
|
|
} else {
|
|
ESP_LOGI(TAG, "Partition size: total: %d, used: %d", total, used);
|
|
}
|
|
|
|
// Check consistency of reported partition size info.
|
|
if (used > total) {
|
|
ESP_LOGW(TAG, "Number of used bytes cannot be larger than total. Performing SPIFFS_check().");
|
|
ret = esp_spiffs_check(conf.partition_label);
|
|
// Could be also used to mend broken files, to clean unreferenced pages, etc.
|
|
// More info at https://github.com/pellepl/spiffs/wiki/FAQ#powerlosses-contd-when-should-i-run-spiffs_check
|
|
if (ret != ESP_OK) {
|
|
ESP_LOGE(TAG, "SPIFFS_check() failed (%s)", esp_err_to_name(ret));
|
|
return;
|
|
} else {
|
|
ESP_LOGI(TAG, "SPIFFS_check() successful");
|
|
}
|
|
}
|
|
|
|
}
|