mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
52 lines
2.0 KiB
C
52 lines
2.0 KiB
C
/*
|
|
* SPDX-FileCopyrightText: 2018-2024 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "esp_vfs_fat.h"
|
|
#include "diskio_impl.h"
|
|
#include "esp_partition.h"
|
|
#include "sdmmc_cmd.h"
|
|
#include <sys/param.h>
|
|
#include <stddef.h>
|
|
|
|
typedef enum {
|
|
FORMATTED_DURING_LAST_MOUNT = 1 << 0, // The FATFS partition was formatted during the last mount
|
|
} vfs_fat_x_ctx_flags_t;
|
|
|
|
typedef struct vfs_fat_spiflash_ctx_t {
|
|
const esp_partition_t *partition; //The partition where the FAT is located
|
|
bool by_label; //If the partition is mounted by lable or not
|
|
BYTE pdrv; //Drive number that is mounted
|
|
FATFS *fs; //FAT structure pointer that is registered
|
|
wl_handle_t wlhandle; //WL handle
|
|
esp_vfs_fat_mount_config_t mount_config; //Mount configuration
|
|
vfs_fat_x_ctx_flags_t flags; //Flags
|
|
} vfs_fat_spiflash_ctx_t;
|
|
|
|
typedef struct vfs_fat_sd_ctx_t {
|
|
BYTE pdrv; //Drive number that is mounted
|
|
esp_vfs_fat_mount_config_t mount_config; //Mount configuration
|
|
FATFS *fs; //FAT structure pointer that is registered
|
|
sdmmc_card_t *card; //Card info
|
|
char *base_path; //Path where partition is registered
|
|
vfs_fat_x_ctx_flags_t flags; //Flags
|
|
} vfs_fat_sd_ctx_t;
|
|
|
|
static inline size_t esp_vfs_fat_get_allocation_unit_size(
|
|
size_t sector_size, size_t requested_size)
|
|
{
|
|
size_t alloc_unit_size = requested_size;
|
|
const size_t max_sectors_per_cylinder = 128;
|
|
const size_t max_size = sector_size * max_sectors_per_cylinder;
|
|
alloc_unit_size = MAX(alloc_unit_size, sector_size);
|
|
alloc_unit_size = MIN(alloc_unit_size, max_size);
|
|
return alloc_unit_size;
|
|
}
|
|
|
|
vfs_fat_spiflash_ctx_t* get_vfs_fat_spiflash_ctx(wl_handle_t wlhandle);
|
|
vfs_fat_sd_ctx_t* get_vfs_fat_get_sd_ctx(const sdmmc_card_t *card);
|