Libraries/FatIFS/src/include/IFS/FAT/Format.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include <IFS/Error.h>
5 
6 namespace IFS
7 {
8 namespace FAT
9 {
10 using namespace Storage::Disk;
11 using Storage::Partition;
12 
16 struct FormatOptions {
18  SysTypes types{0};
19  uint8_t numFats{1};
20  unsigned align{0};
21  unsigned numRootEntries{512};
22  uint32_t clusterSize{4096};
23 };
24 
25 struct FatParam {
27  uint32_t sectorsPerBlock;
29  uint16_t numRootEntries;
30  uint16_t sectorsPerCluster;
31  uint8_t sectorSizeShift;
32  uint8_t numFats;
34  //
35  uint32_t numClusters; // Number of clusters
36  uint32_t numFatSectors; // FAT size [sector]
37  uint32_t numRootDirSectors; // Root dir size [sector]
38  uint16_t numReservedSectors; // Number of reserved sectors
41 };
42 
53 
64 ErrorCode formatVolume(Partition partition, const FatParam& param);
65 
72 inline ErrorCode formatVolume(Partition partition, const FormatOptions& opt = {})
73 {
74  FatParam param;
75  return calculateFatParam(partition, opt, param) ?: formatVolume(partition, param);
76 }
77 
78 } // namespace FAT
79 } // namespace IFS
uint32_t storage_size_t
Definition: Components/Storage/src/include/Storage/Types.h:19
Represents a flash partition.
Definition: Partition.h:86
The String class.
Definition: WString.h:137
int ErrorCode
Definition: Components/IFS/src/include/IFS/Error.h:35
ErrorCode formatVolume(Partition partition, const FatParam &param)
Format partition using pre-calculated FAT parameters.
ErrorCode calculateFatParam(Partition partition, const FormatOptions &opt, FatParam &param)
Deduce FAT volume parameters for given space.
Definition: DirectoryTemplate.h:37
Definition: Partition.h:78
SysIndicator
MBR partition system type indicator values.
Definition: PartInfo.h:56
SysType
Identifies exact disk volume type.
Definition: PartInfo.h:40
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:25
uint32_t sectorsPerBlock
Flash erase block size.
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:27
uint8_t numFats
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:32
String volumeLabel
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:26
uint16_t numReservedSectors
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:38
uint16_t sectorsPerCluster
Set to 0 for auto-calculation.
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:30
uint32_t numRootDirSectors
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:37
SysType sysType
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:33
uint32_t numFatSectors
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:36
uint32_t volumeSerialNumber
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:28
uint8_t sectorSizeShift
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:31
uint16_t numRootEntries
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:29
storage_size_t fatStartSector
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:39
SysIndicator sysIndicator
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:40
uint32_t numClusters
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:35
Formatting options.
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:16
String volumeLabel
Definition: Libraries/FatIFS/src/include/IFS/FAT/Format.h:17