31#include "../common/FmtNumber.h"
32#include "../common/FsApiConstants.h"
33#include "../common/FsDateTime.h"
34#include "../common/FsStructs.h"
44#include <avr/pgmspace.h>
52#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
56#define pgm_read_word(addr) (*(const uint16_t *)(addr))
77#define isDirSeparator(c) ((c) == '/')
129#if DESTRUCTOR_CLOSES_FILE
143 operator bool() const
158 return n > INT_MAX ? INT_MAX : n;
257 return file.
open(
this, path, O_RDONLY);
284 int fgets(
char *str,
int num,
char *delim =
nullptr);
381#if USE_FAT_FILE_FLAG_CONTIGUOUS
459 if (c ==
'"' || c ==
'|')
464 if (0X2A <= c && c <= 0X2F && c != 0X2D)
469 if (0X3A <= c && c <= 0X3F)
474 if (0X5B <= c && c <= 0X5D)
478 return 0X20 < c && c < 0X7F;
497 bool ls(
print_t *pr, uint8_t flags = 0, uint8_t indent = 0);
509 bool mkdir(
FatFile *dir,
const char *path,
bool pFlag =
true);
517 return "use getName()";
600 bool open(
const char *path,
oflag_t oflag = O_RDONLY);
683 char *str = buf +
sizeof(buf);
693 return write(str, buf +
sizeof(buf) - str);
713 char buf[3 *
sizeof(Type) + 3];
714 char *str = buf +
sizeof(buf);
729 if (
sizeof(Type) < 4)
741 return write(str, &buf[
sizeof(buf)] - str);
782 return read(&b, 1) == 1 ? b : -1;
795 int read(
void *buf,
size_t count);
832 bool remove(
const char *path);
841 bool rename(
const char *newPath);
945 bool timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute,
973 return write(str, strlen(str));
999 size_t write(
const void *buf,
size_t count);
1001#if ENABLE_ARDUINO_SERIAL
1014 bool ls(uint8_t flags = 0)
1016 return ls(&Serial, flags);
1098#include "../common/ArduinoFiles.h"
const uint8_t FNAME_FLAG_LC_EXT
Definition FatFile.h:105
const uint8_t FNAME_FLAG_NEED_LFN
Definition FatFile.h:101
const uint8_t FNAME_FLAG_MIXED_CASE
Definition FatFile.h:99
const uint8_t FNAME_FLAG_LC_BASE
Definition FatFile.h:103
const uint8_t FNAME_FLAG_LOST_CHARS
Definition FatFile.h:97
configuration definitions
char * fmtDouble(char *str, double num, uint8_t prec, bool altFmt)
Definition FmtNumber.cpp:262
char * fmtBase10(char *str, uint16_t n)
Definition FmtNumber.cpp:163
int oflag_t
Definition FsApiConstants.h:45
const uint8_t FAT_ATTRIB_READ_ONLY
Definition FsStructs.h:224
const uint8_t FAT_ATTRIB_SYSTEM
Definition FsStructs.h:226
const uint8_t FAT_CASE_LC_BASE
Definition FsStructs.h:232
const uint8_t FAT_CASE_LC_EXT
Definition FsStructs.h:234
const uint8_t FAT_ATTRIB_HIDDEN
Definition FsStructs.h:225
const uint8_t FAT_ATTRIB_DIRECTORY
Definition FsStructs.h:228
Print print_t
Definition SysCall.h:66
Basic file class.
Definition FatFile.h:112
size_t getName(char *name, size_t size)
Definition FatFileLFN.cpp:148
bool isRoot() const
Definition FatFile.h:424
void clearError()
Definition FatFile.h:168
DirFat_t * readDirCache(bool skipReadOk=false)
Definition FatFile.cpp:1028
size_t write(const char *str)
Definition FatFile.h:971
bool createContiguous(FatFile *dirFile, const char *path, uint32_t size)
Definition FatFile.cpp:193
bool isRootFixed() const
Definition FatFile.h:434
size_t printFileSize(print_t *pr)
Definition FatFilePrint.cpp:176
bool contiguousRange(uint32_t *bgnSector, uint32_t *endSector)
Definition FatFile.cpp:132
bool isContiguous() const
Definition FatFile.h:383
void flush()
Definition FatFile.h:298
uint8_t m_flags
Definition FatFile.h:1086
static const uint8_t FILE_FLAG_DIR_DIRTY
Definition FatFile.h:1078
size_t printAccessDateTime(print_t *pr)
Definition FatFile.h:647
DirFat_t * cacheDirEntry(uint8_t action)
Definition FatFile.cpp:109
static const uint8_t FILE_ATTR_DIR
Definition FatFile.h:1051
size_t printAccessDate(print_t *pr)
Definition FatFilePrint.cpp:144
static const uint8_t FILE_FLAG_CONTIGUOUS
Definition FatFile.h:1076
bool getModifyDateTime(uint16_t *pdate, uint16_t *ptime)
Definition FatFile.cpp:343
bool lfnUniqueSfn(fname_t *fname)
Definition FatFileLFN.cpp:789
int8_t readDir(DirFat_t *dir)
Definition FatFile.cpp:992
bool dirEntry(DirFat_t *dir)
Definition FatFile.cpp:209
FatFile(const char *path, oflag_t oflag)
Definition FatFile.h:125
uint32_t m_firstCluster
Definition FatFile.h:1095
static const uint8_t FILE_ATTR_ROOT_FIXED
Definition FatFile.h:1045
size_t printModifyDateTime(print_t *pr)
Definition FatFilePrint.cpp:165
static const uint8_t FILE_FLAG_WRITE
Definition FatFile.h:1071
bool isSystem() const
Definition FatFile.h:444
~FatFile()
Definition FatFile.h:131
uint8_t m_attributes
Definition FatFile.h:1084
bool rename(const char *newPath)
Definition FatFile.cpp:1070
void dmpFile(print_t *pr, uint32_t pos, size_t n)
Definition FatFilePrint.cpp:44
bool exists(const char *path)
Definition FatFile.h:254
uint32_t curCluster() const
Definition FatFile.h:211
uint32_t m_fileSize
Definition FatFile.h:1094
bool timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
Definition FatFile.cpp:1470
bool seekCur(int32_t offset)
Definition FatFile.h:887
void rewind()
Definition FatFile.h:851
uint32_t firstBlock() const
Definition FatFile.h:291
bool getAccessDate(uint16_t *pdate)
Definition FatFile.cpp:312
bool openCluster(FatFile *file)
Definition FatFileLFN.cpp:209
uint8_t m_lfnOrd
Definition FatFile.h:1087
bool ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)
Definition FatFilePrint.cpp:91
int read()
Definition FatFile.h:779
static uint8_t lfnChecksum(uint8_t *name)
Definition FatFileLFN.cpp:31
bool sync()
Definition FatFile.cpp:1421
int fgets(char *str, int num, char *delim=nullptr)
Definition FatFile.cpp:258
bool ls(uint8_t flags=0)
Definition FatFile.h:1014
static const uint8_t WRITE_ERROR
Definition FatFile.h:1081
static const uint8_t FILE_ATTR_FILE
Definition FatFile.h:1041
static bool parsePathName(const char *str, fname_t *fname, const char **ptr)
Definition FatFileLFN.cpp:223
uint32_t m_dirSector
Definition FatFile.h:1093
size_t printSFN(print_t *pr)
Definition FatFileSFN.cpp:83
int available() const
Definition FatFile.h:155
FatFile()
Definition FatFile.h:115
bool truncate()
Definition FatFile.cpp:1519
bool openRoot(FatVolume *vol)
Definition FatFile.cpp:776
static const uint8_t FILE_ATTR_HIDDEN
Definition FatFile.h:1037
uint16_t dirIndex() const
Definition FatFile.h:229
static void printFatTime(print_t *pr, uint16_t fatTime)
bool isBusy()
Definition FatFile.cpp:359
bool seekEnd(int32_t offset=0)
Definition FatFile.h:896
static const uint8_t FILE_ATTR_SYSTEM
Definition FatFile.h:1039
void fgetpos(fspos_t *pos) const
Definition FatFile.cpp:295
static const uint8_t READ_ERROR
Definition FatFile.h:1082
uint32_t fileSize() const
Definition FatFile.h:286
uint32_t m_curPosition
Definition FatFile.h:1092
uint8_t m_error
Definition FatFile.h:1085
bool isOpen() const
Definition FatFile.h:409
static const uint8_t FILE_ATTR_ROOT
Definition FatFile.h:1049
size_t printField(Type value, char term)
Definition FatFile.h:710
bool isRoot32() const
Definition FatFile.h:429
size_t printField(float value, char term, uint8_t prec=2)
Definition FatFile.h:701
bool getCreateDateTime(uint16_t *pdate, uint16_t *ptime)
Definition FatFile.cpp:327
static bool legal83Char(uint8_t c)
Definition FatFile.h:457
bool rmdir()
Definition FatFile.cpp:1198
uint32_t curPosition() const
Definition FatFile.h:217
uint32_t m_curCluster
Definition FatFile.h:1091
static const uint8_t FILE_FLAG_READ
Definition FatFile.h:1070
static const uint8_t FILE_FLAG_APPEND
Definition FatFile.h:1072
bool isWritable() const
Definition FatFile.h:449
size_t printField(double value, char term, uint8_t prec=2)
Definition FatFile.h:680
bool addDirCluster()
Definition FatFile.cpp:61
bool truncate(uint32_t length)
Definition FatFile.h:962
static void printFatDate(print_t *pr, uint16_t fatDate)
bool seekSet(uint32_t pos)
Definition FatFile.cpp:1341
size_t printCreateDateTime(print_t *pr)
Definition FatFilePrint.cpp:154
uint32_t m_dirCluster
Definition FatFile.h:1090
size_t getSFN(char *name)
Definition FatFileSFN.cpp:31
bool mkdir(FatFile *dir, const char *path, bool pFlag=true)
Definition FatFile.cpp:364
bool isReadOnly() const
Definition FatFile.h:419
static const uint8_t FILE_ATTR_ROOT32
Definition FatFile.h:1047
bool isSubDir() const
Definition FatFile.h:439
static const uint8_t FILE_ATTR_SUBDIR
Definition FatFile.h:1043
void fsetpos(const fspos_t *pos)
Definition FatFile.cpp:306
int peek()
Definition FatFile.cpp:842
uint32_t available32() const
Definition FatFile.h:163
bool getWriteError() const
Definition FatFile.h:371
bool rmRfStar()
Definition FatFile.cpp:1248
bool remove()
Definition FatFileLFN.cpp:699
static const uint8_t FILE_ATTR_COPY
Definition FatFile.h:1053
bool isFile() const
Definition FatFile.h:394
static const uint8_t FILE_ATTR_READ_ONLY
Definition FatFile.h:1035
bool openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)
Definition FatFile.cpp:707
uint16_t m_dirIndex
Definition FatFile.h:1088
static const uint8_t FILE_FLAG_PREALLOCATE
Definition FatFile.h:1074
const char * name() const
Definition FatFile.h:515
size_t printName()
Definition FatFile.h:1022
FatVolume * m_vol
Definition FatFile.h:1089
bool openCachedEntry(FatFile *dirFile, uint16_t cacheIndex, oflag_t oflag, uint8_t lfnOrd)
Definition FatFile.cpp:615
static const uint8_t FILE_ATTR_CLOSED
Definition FatFile.h:1033
bool isHidden() const
Definition FatFile.h:399
uint32_t dirSize()
Definition FatFile.cpp:233
size_t write(uint8_t b)
Definition FatFile.h:979
bool isReadable() const
Definition FatFile.h:414
void clearWriteError()
Definition FatFile.h:173
bool preAllocate(uint32_t length)
Definition FatFile.cpp:812
uint32_t firstSector() const
Definition FatFile.cpp:301
bool open(FatVolume *vol, const char *path, oflag_t oflag)
Definition FatFile.cpp:499
bool getAccessDateTime(uint16_t *pdate, uint16_t *ptime)
Definition FatFile.h:322
uint8_t getError() const
Definition FatFile.h:340
bool isLFN() const
Definition FatFile.h:404
bool addCluster()
Definition FatFile.cpp:31
bool close()
Definition FatFile.cpp:124
Integration class for the FatLib library.
Definition FatVolume.h:39
FAT16/FAT32 file with Arduino Stream.
Definition FatFile.h:1104
File32 openNextFile(oflag_t oflag=O_RDONLY)
Definition FatFile.h:1111
StreamFile class.
Definition ArduinoFiles.h:64
static bool value
Definition DigitalPin.h:210
Definition FsStructs.h:237
Internal type for file position - do not use in user apps.
Definition FatFile.h:69
uint32_t cluster
Definition FatFile.h:73
uint32_t position
Definition FatFile.h:71
Internal type for Short File Name - do not use in user apps.
Definition FatFile.h:84
uint8_t sfn[11]
Definition FatFile.h:94
uint8_t flags
Definition FatFile.h:86
size_t len
Definition FatFile.h:88
const char * lfn
Definition FatFile.h:90
uint8_t seqPos
Definition FatFile.h:92
Definition FsStructs.h:133