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

Buffered line reader for LittleFS lfs_file_t files. More...

#include <LittleFsFileReader.h>

+ Inheritance diagram for LittleFsFileReader:
+ Collaboration diagram for LittleFsFileReader:

Public Member Functions

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

Private Attributes

lfs_t * lfs = nullptr
 
lfs_file_t file {}
 
bool isOpen = false
 

Detailed Description

Definition at line 10 of file LittleFsFileReader.h.

Constructor & Destructor Documentation

◆ LittleFsFileReader()

LittleFsFileReader::LittleFsFileReader ( lfs_t *  lfs)
explicit

Definition at line 4 of file LittleFsFileReader.cpp.

◆ ~LittleFsFileReader()

LittleFsFileReader::~LittleFsFileReader ( )
override

Definition at line 19 of file LittleFsFileReader.cpp.

20{
21 close();
22}
void close() override
Close the file and release resources.

References close().

+ Here is the call graph for this function:

Member Function Documentation

◆ close()

void LittleFsFileReader::close ( )
overridevirtual

Implements StorageFileReader.

Definition at line 55 of file LittleFsFileReader.cpp.

56{
57 if (isOpen) {
58 lfs_file_close(lfs, &file);
59 isOpen = false;
60 }
61}

References file, isOpen, and lfs.

Referenced by ~LittleFsFileReader().

+ Here is the caller graph for this function:

◆ open()

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

Definition at line 7 of file LittleFsFileReader.cpp.

8{
9 if (!lfs)
10 return false;
11 isOpen = (lfs_file_open(lfs, &file, path.c_str(), LFS_O_RDONLY) == 0);
12 if (!isOpen)
13 {
14 return false;
15 }
16 return isOpen;
17}

References file, isOpen, and lfs.

◆ readLine()

bool LittleFsFileReader::readLine ( char *  outLine,
size_t  maxLen 
)
virtual

Reads characters until newline (\n) or buffer is full. Carriage returns (\r) are stripped. Returns false on EOF or error.

Parameters
outLineBuffer to store the line
maxLenSize of the buffer
Returns
true if a line was read, false on EOF or error

Implements StorageFileReader.

Definition at line 24 of file LittleFsFileReader.cpp.

25{
26 if (!isOpen || maxLen == 0)
27
28 return false;
29
30 size_t count = 0;
31 uint8_t ch;
32 int result;
33
34 while (count < maxLen - 1)
35 {
36 result = lfs_file_read(lfs, &file, &ch, 1);
37
38 if (result <= 0)
39 break;
40 if (ch == '\n')
41 break;
42 if (ch != '\r')
43 {
44 outLine[count++] = static_cast<char>(ch);
45 }
46 }
47
48 if (count == 0 && result <= 0)
49 return false;
50
51 outLine[count] = '\0';
52 return true;
53}

References file, isOpen, and lfs.

Member Data Documentation

◆ file

lfs_file_t LittleFsFileReader::file {}
private

Definition at line 43 of file LittleFsFileReader.h.

43{};

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

◆ isOpen

bool LittleFsFileReader::isOpen = false
private

Definition at line 44 of file LittleFsFileReader.h.

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

◆ lfs

lfs_t* LittleFsFileReader::lfs = nullptr
private

Definition at line 42 of file LittleFsFileReader.h.

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


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