ASF docs  3.1.3
Some important library documentation
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
fat.h File Reference
#include "fs_com.h"
+ Include dependency graph for fat.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

union  Fs_rootdir
 Union to define a root directory. More...
struct  Fs_management
 Struture to save the variables frequently used by file system mounted. More...
struct  Fs_management_fast
 Struture to save the variables very frequently used by file system mounted. More...
struct  Fs_management_entry
 Struture to save the frequently variables of file system mounted. More...
struct  Fs_segment
 Struture to define a segment. More...
struct  Fs_cluster
 Struture to store cluster information. More...
struct  Fs_clusterlist_cache
 Struture to store the cluster list cache. More...
struct  Fs_sector_cache
 Struture to store the information about sector cache (=last sector read or write on disk) More...
struct  Fs_rootdir.seg

Macros

#define _GLOBEXT_   extern
#define Is_fat12   (FS_TYPE_FAT_12 == fs_g_nav_fast.u8_type_fat)
#define Is_fat16   (FS_TYPE_FAT_16 == fs_g_nav_fast.u8_type_fat)
#define Is_fat32   (FS_TYPE_FAT_32 == fs_g_nav_fast.u8_type_fat)
#define Is_unicode   (g_b_unicode)
#define FS_MBR_OFFSET_PART_ENTRY(num)   ((uint16_t)((uint16_t)(0x1BE)+(0x10 * num)))
 Position (unit byte) in the MBR of a partition entry.
#define FS_BUF_SECTOR_EMPTY   0xFF
 Signal that sector cache is not valid.
Macro to access at fields in BPB sector (only used in fat_mount() function)

The name prefixed by "BPB_" are defined in "Hardware White Paper FAT"

#define LOW_16_BPB_BytsPerSec   fs_g_sector[11]
#define HIGH_16_BPB_BytsPerSec   fs_g_sector[12]
#define U8_BPB_SecPerClus   fs_g_sector[13]
#define LOW_16_BPB_RootEntCnt   fs_g_sector[17]
#define HIGH_16_BPB_RootEntCnt   fs_g_sector[18]
#define LOW_16_BPB_FATSz16   fs_g_sector[22]
#define HIGH_16_BPB_FATSz16   fs_g_sector[23]
#define LOW0_32_BPB_FATSz32   fs_g_sector[36]
#define LOW1_32_BPB_FATSz32   fs_g_sector[37]
#define LOW2_32_BPB_FATSz32   fs_g_sector[38]
#define LOW3_32_BPB_FATSz32   fs_g_sector[39]
#define LOW_16_BPB_TotSec16   fs_g_sector[19]
#define HIGH_16_BPB_TotSec16   fs_g_sector[20]
#define LOW0_32_BPB_TotSec32   fs_g_sector[32]
#define LOW1_32_BPB_TotSec32   fs_g_sector[33]
#define LOW2_32_BPB_TotSec32   fs_g_sector[34]
#define LOW3_32_BPB_TotSec32   fs_g_sector[35]
#define LOW_16_BPB_ResvSecCnt   fs_g_sector[14]
#define HIGH_16_BPB_ResvSecCnt   fs_g_sector[15]
#define U8_BPB_NumFATs   fs_g_sector[16]
#define LOW0_32_BPB_RootClus   fs_g_sector[44]
#define LOW1_32_BPB_RootClus   fs_g_sector[45]
#define LOW2_32_BPB_RootClus   fs_g_sector[46]
#define LOW3_32_BPB_RootClus   fs_g_sector[47]
#define LOW_16_BPB_FSInfo   fs_g_sector[48]
#define HIGH_16_BPB_FSInfo   fs_g_sector[49]
Constante used to sign a MBR or PBR sectors
#define FS_BR_SIGNATURE_LOW   0x55
#define FS_BR_SIGNATURE_HIGH   0xAA
Constants used in MBR sector
#define FS_PART_BOOTABLE   0x80
#define FS_PART_NO_BOOTABLE   0x00
#define FS_PART_TYPE_FAT12   0x01
#define FS_PART_TYPE_FAT16_INF32M   0x04
#define FS_PART_TYPE_FAT16_SUP32M   0x06
#define FS_PART_TYPE_FAT16_SUP32M_BIS   0x0E
#define FS_PART_TYPE_FAT32   0x0B
#define FS_PART_TYPE_FAT32_BIS   0x0C
#define FS_PART_REMOVE_MEDIA   0xF0
#define FS_PART_NO_REMOVE_MEDIA   0xF8
#define FS_PART_HARD_DISK   0x81
#define FS_BOOT_SIGN   0x29
Maximum of FAT cluster
#define FS_FAT12_MAX_CLUSTERS   4085
#define FS_FAT16_MAX_CLUSTERS   65525
Constants used in the first byte of file entry
#define FS_ENTRY_END   0x00
#define FS_ENTRY_DEL   0xE5
#define FS_ENTRY_LFN_LAST   0x40
Constantes used to manage the file entry
#define FS_SIZE_FILE_ENTRY   32
#define FS_SHIFT_B_TO_FILE_ENTRY   5
#define FS_SIZE_LFN_ENTRY   13
#define FS_SIZE_SFNAME   11
#define FS_SIZE_SFNAME_WITHOUT_EXT   8
#define FS_SIZE_SFNAME_EXT_ONLY   3
LIMITATIONS OF FILE SYSTEM
#define FS_NB_FAT   2
The unit sector of 512B is many used in file System stack
#define FS_512B   512
#define FS_512B_MASK   (512-1)
#define FS_512B_SHIFT_BIT   9
#define FS_SIZE_OF_SECTOR   FS_512B
#define FS_MASK_SIZE_OF_SECTOR   FS_512B_MASK
#define FS_SHIFT_B_TO_SECTOR   FS_512B_SHIFT_BIT
#define FS_CACHE_SIZE   512
Status of the fat_checkcluster() function
#define FS_CLUS_OK   0
#define FS_CLUS_BAD   1
#define FS_CLUS_END   2
Options of the fat_cluster_list() function
#define FS_CLUST_ACT_SEG   0x01
#define FS_CLUST_ACT_ONE   0x02
#define FS_CLUST_ACT_CLR   0x03
Options of the fat_cluster_val() function
#define FS_CLUST_VAL_READ   false
#define FS_CLUST_VAL_WRITE   true
#define FS_CLUST_VAL_EOL   0x0FFFFFFF
FAT type ID, used in "Fs_management_fast.u8_type_fat"
#define FS_TYPE_FAT_UNM   0
 Partition not mounted.
#define FS_TYPE_FAT_12   1
#define FS_TYPE_FAT_16   2
#define FS_TYPE_FAT_32   3
Value used in "Fs_management_fast.u16_entry_pos_sel_file"
#define FS_NO_SEL   0xFFFF
 Signal that a file entry isn't selected.
#define FS_END_FIND   0xFFFE
 Signal that a file entry is the last file entry accessibled by system.
Macro to check the file open mode
#define Fat_file_is_open()   (fs_g_nav_entry.u8_open_mode !=0 )
#define Fat_file_isnot_open()   (fs_g_nav_entry.u8_open_mode ==0 )
#define Fat_file_close()   (fs_g_nav_entry.u8_open_mode =0 )
Functions to control access disk
#define fat_check_nav_access_disk(b)   (true)
#define fat_check_nav_access_file(b)   (true)
Functions to manage navigator switch
#define fat_invert_nav   ( arg ) (arg++)
#define fat_copy_nav   ( arg ) (arg++)

Functions

uint8_t fat_get_nbpartition (void)
 This function returns the number of partition present on selected drive.
bool fat_mount (void)
 This function mounts a partition.
bool fat_format (uint8_t u8_fat_type)
 This function formats the drive.
bool fat_serialnumber (bool b_action, uint8_t _MEM_TYPE_SLOW_ *a_u8_sn)
 This function reads or writes a serial number.
Functions to verify navigator state

}@

bool fat_check_device (void)
 This function checks device state.
bool fat_check_mount (void)
 This function checks if the partition is mounted.
bool fat_check_noopen (void)
 This function checks if a file is not opened on current navigator.
bool fat_check_open (void)
 This function checks if a file is opened on current navigator.
bool fat_check_select (void)
 This function checks if a file is selected on current navigator.
bool fat_check_mount_noopen (void)
 This function checks if the partition is mounted and no file is opened.
bool fat_check_mount_select_noopen (void)
 This function checks if the partition is mounted and if no file is opened and a file is selected.
bool fat_check_mount_select_open (void)
 This function checks if the partition is mounted and if a file is opened.
bool fat_check_mount_select (void)
 This function checks if the partition is mounted and if a file is selected.
bool fat_check_is_file (void)
 This function checks if the selected file entry is a file and not a directory.
Functions to compute free space on a partition
uint32_t fat_getfreespace (void)
 This function returns the space free in the partition.
uint8_t fat_getfreespace_percent (void)
 This function returns the space free in percent.
bool fat_write_fat32_FSInfo (uint32_t u32_nb_free_cluster)
uint32_t fat_read_fat32_FSInfo (void)
Functions to manage the cluster list
bool fat_cluster_list (uint8_t opt_action, bool b_for_file)
 This function gets or clears a cluster list.
void fat_cache_clusterlist_reset (void)
 This function resets the cluster list caches.
bool fat_cluster_val (bool b_mode)
 This function returns or modifys a cluster value in FAT.
bool fat_cluster_readnext (void)
 This function is optimized to read a continue cluster list on FAT16 and FAT32.
uint8_t fat_checkcluster (void)
 This function checks the cluster value.
bool fat_allocfreespace (void)
void fat_clear_info_fat_mod (void)
bool fat_clear_cluster (void)
bool fat_update_fat2 (void)
Functions to read or to write a file or a directory
bool fat_read_file (uint8_t mode)
 This function gets or clears a cluster list at the current position in the selected file.
bool fat_write_file (uint8_t mode, uint32_t u32_nb_sector_write)
bool fat_read_dir (void)
 This function fill the internal cache with a sector from current directory.
bool fat_initialize_dir (void)
Functions to manage the entry field (fat.c)
bool fat_entry_check (bool b_type)
 This function checks the entry.
bool fat_entry_checkext (FS_STRING sz_filter)
 This function checks the file extension.
void fat_get_entry_info (void)
 This function reads information about selected file.
bool fat_entry_is_dir (void)
 This function checks if the entry file is a directory.
void fat_clear_entry_info_and_ptr (void)
 This function resets the selection pointers.
void fat_write_entry_file (void)
bool fat_entry_shortname (FS_STRING sz_name, uint8_t u8_size_max, bool b_mode)
 This function returns or compares the short name entry.
bool fat_entry_longname (FS_STRING sz_name, uint8_t u8_size_max, bool b_mode, bool b_match_case)
 This function returns or compares the long name entry.
bool fat_check_eof_name (uint16_t character)
 Check end of name.
PTR_CACHE fat_get_ptr_entry (void)
 This function returns a cache pointer on the current entry.
Functions to manage the entry field (fat_unusual.c)
bool fat_create_entry_file_name (FS_STRING sz_name)
void fat_get_date (FS_STRING sz_date, bool type_date)
 This function reads the information about a date.
void fat_set_date (const FS_STRING sz_date, bool type_date)
bool fat_delete_file (bool b_cluster_list)
bool fat_entry_label (bool b_action, FS_STRING sz_label)
Functions to manage the cache
bool fat_cache_read_sector (bool b_load)
 This function loads a memory sector in internal cache sector.
void fat_cache_reset (void)
 This function resets the sector cache.
void fat_cache_clear (void)
void fat_cache_mark_sector_as_dirty (void)
bool fat_cache_flush (void)
 This function flushs the sector cache on the memory if necessary.

Variables

_GLOBEXT_ bool g_b_unicode
 Variables to select string format (initialised in nav_reset())
_GLOBEXT_ bool g_b_string_length
 Variables to select LENGTH string mode (initialised in nav_reset())
_GLOBEXT_ bool g_b_no_check_disk
 Variables to enable/disable the disk check before each action on disk.
_GLOBEXT_ _MEM_TYPE_FAST_
Fs_segment 
fs_g_seg
 Variable frequently used by many function (optimization, no parameter in function)
_GLOBEXT_ _MEM_TYPE_FAST_
Fs_cluster 
fs_g_cluster
 To take time in functions: fat_getfreespace, fat_cluster_list, fat_cluster_val, fat_checkcluster.
Variables initialised in drive_mount()
_GLOBEXT_ _MEM_TYPE_SLOW_
Fs_management 
fs_g_nav
_GLOBEXT_ _MEM_TYPE_FAST_
Fs_management_fast 
fs_g_nav_fast
_GLOBEXT_ _MEM_TYPE_SLOW_
Fs_management_entry 
fs_g_nav_entry

Variables used to manage the sector cache

typedef uint8_t _MEM_TYPE_SLOW_ * PTR_CACHE
_GLOBEXT_ _MEM_TYPE_SLOW_ uint8_t fs_g_sector [FS_CACHE_SIZE]
 Use "FAT sector cache" to store a sector from a file (see file_putc(), file_getc(), file_read_buf(), file_write_buf())
_GLOBEXT_ _MEM_TYPE_SLOW_
Fs_sector_cache 
fs_g_sectorcache
_GLOBEXT_ _MEM_TYPE_SLOW_ uint32_t fs_gu32_addrsector
 Store the address of futur cache (unit 512B)