Logo Pico-Framework A web-first embedded framework for C++
Loading...
Searching...
No Matches
FatFsFileReader Class Reference

Buffered line reader for FatFs FILE* files. More...

#include <FatFsFileReader.h>

+ Inheritance diagram for FatFsFileReader:
+ Collaboration diagram for FatFsFileReader:

Public Member Functions

 FatFsFileReader ()
 
 ~FatFsFileReader () override
 
bool open (const std::string &path)
 Opens a file for reading.
 
bool readLine (char *outLine, size_t maxLen) override
 Reads a single line into the provided buffer.
 
void close () override
 Closes the file.
 
- Public Member Functions inherited from StorageFileReader
virtual ~StorageFileReader ()=default
 

Private Attributes

FF_FILE * file = nullptr
 
bool isOpen = false
 

Detailed Description

Definition at line 10 of file FatFsFileReader.h.

Constructor & Destructor Documentation

◆ FatFsFileReader()

FatFsFileReader::FatFsFileReader ( )
default

◆ ~FatFsFileReader()

FatFsFileReader::~FatFsFileReader ( )
override

Definition at line 7 of file FatFsFileReader.cpp.

7 {
8 close();
9}
void close() override
Closes the file.

References close().

+ Here is the call graph for this function:

Member Function Documentation

◆ close()

void FatFsFileReader::close ( )
overridevirtual

Implements StorageFileReader.

Definition at line 18 of file FatFsFileReader.cpp.

18 {
19 if (isOpen && file) {
20 ff_fclose(file);
21 file = nullptr;
22 isOpen = false;
23 }
24}

References file, and isOpen.

Referenced by ~FatFsFileReader().

+ Here is the caller graph for this function:

◆ open()

bool FatFsFileReader::open ( const std::string &  path)
Parameters
pathPath to the file
Returns
true if opened successfully

Definition at line 11 of file FatFsFileReader.cpp.

11 {
12 file = ff_fopen(path.c_str(), "r");
13 isOpen = (file != nullptr);
14 return isOpen;
15}

References file, and isOpen.

◆ readLine()

bool FatFsFileReader::readLine ( char *  outLine,
size_t  maxLen 
)
overridevirtual

Carriage returns are stripped. Stops at newline or buffer end.

Parameters
outLineDestination buffer
maxLenSize of the buffer
Returns
true if line read, false on EOF or error

Implements StorageFileReader.

Definition at line 27 of file FatFsFileReader.cpp.

27 {
28 if (!isOpen || !file || maxLen == 0) return false;
29
30
31 size_t count = 0;
32 int ch;
33
34 while (count < maxLen - 1) {
35 ch = ff_fgetc(file);
36 if (ch == EOF) break;
37 if (ch == '\n') break;
38 if (ch != '\r') {
39 outLine[count++] = static_cast<char>(ch);
40 }
41 }
42
43 if (count == 0 && ch == EOF) return false;
44
45 outLine[count] = '\0';
46 return true;
47}

References file, and isOpen.

Member Data Documentation

◆ file

FF_FILE* FatFsFileReader::file = nullptr
private

Definition at line 37 of file FatFsFileReader.h.

Referenced by close(), open(), and readLine().

◆ isOpen

bool FatFsFileReader::isOpen = false
private

Definition at line 38 of file FatFsFileReader.h.

Referenced by close(), open(), and readLine().


The documentation for this class was generated from the following files: