Fixed FFat::end. Fixes #3244 (#3245)

* Fixed FFat::end. Fixes #3244

* Missed the handle check in format
This commit is contained in:
lbernstone 2019-09-24 14:23:03 -06:00 committed by Me No Dev
parent f32083a6d0
commit ca88fdc273
2 changed files with 13 additions and 8 deletions

View File

@ -40,16 +40,20 @@ const esp_partition_t *check_ffat_partition(const char* label)
bool F_Fat::begin(bool formatOnFail, const char * basePath, uint8_t maxOpenFiles, const char * partitionLabel) bool F_Fat::begin(bool formatOnFail, const char * basePath, uint8_t maxOpenFiles, const char * partitionLabel)
{ {
if(_wl_handle){ if(_wl_handle != WL_INVALID_HANDLE){
log_w("Already Mounted!"); log_w("Already Mounted!");
return true; return true;
} }
if (!check_ffat_partition(partitionLabel)) return false; if (!check_ffat_partition(partitionLabel)){
log_e("No fat partition found on flash");
return false;
}
esp_vfs_fat_mount_config_t conf = { esp_vfs_fat_mount_config_t conf = {
.format_if_mount_failed = formatOnFail, .format_if_mount_failed = formatOnFail,
.max_files = maxOpenFiles .max_files = maxOpenFiles,
.allocation_unit_size = CONFIG_WL_SECTOR_SIZE
}; };
esp_err_t err = esp_vfs_fat_spiflash_mount(basePath, partitionLabel, &conf, &_wl_handle); esp_err_t err = esp_vfs_fat_spiflash_mount(basePath, partitionLabel, &conf, &_wl_handle);
if(err){ if(err){
@ -62,13 +66,13 @@ bool F_Fat::begin(bool formatOnFail, const char * basePath, uint8_t maxOpenFiles
void F_Fat::end() void F_Fat::end()
{ {
if(_wl_handle){ if(_wl_handle != WL_INVALID_HANDLE){
esp_err_t err = esp_vfs_fat_spiflash_unmount(_impl->mountpoint(), _wl_handle); esp_err_t err = esp_vfs_fat_spiflash_unmount(_impl->mountpoint(), _wl_handle);
if(err){ if(err){
log_e("Unmounting FFat partition failed! Error: %d", err); log_e("Unmounting FFat partition failed! Error: %d", err);
return; return;
} }
_wl_handle = 0; _wl_handle = WL_INVALID_HANDLE;
_impl->mountpoint(NULL); _impl->mountpoint(NULL);
} }
} }
@ -77,7 +81,7 @@ bool F_Fat::format(bool full_wipe, char* partitionLabel)
{ {
esp_err_t result; esp_err_t result;
bool res = true; bool res = true;
if(_wl_handle){ if(_wl_handle != WL_INVALID_HANDLE){
log_w("Already Mounted!"); log_w("Already Mounted!");
return false; return false;
} }
@ -102,7 +106,8 @@ bool F_Fat::format(bool full_wipe, char* partitionLabel)
// Now do a mount with format_if_fail (which it will) // Now do a mount with format_if_fail (which it will)
esp_vfs_fat_mount_config_t conf = { esp_vfs_fat_mount_config_t conf = {
.format_if_mount_failed = true, .format_if_mount_failed = true,
.max_files = 1 .max_files = 1,
.allocation_unit_size = CONFIG_WL_SECTOR_SIZE
}; };
result = esp_vfs_fat_spiflash_mount("/format_ffat", partitionLabel, &conf, &temp_handle); result = esp_vfs_fat_spiflash_mount("/format_ffat", partitionLabel, &conf, &temp_handle);
esp_vfs_fat_spiflash_unmount("/format_ffat", temp_handle); esp_vfs_fat_spiflash_unmount("/format_ffat", temp_handle);

View File

@ -37,7 +37,7 @@ public:
bool exists(const String& path); bool exists(const String& path);
private: private:
wl_handle_t _wl_handle; wl_handle_t _wl_handle = WL_INVALID_HANDLE;
}; };
} }