distortos  v0.7.0
object-oriented C++ RTOS for microcontrollers
Littlefs1File.hpp
Go to the documentation of this file.
1 
12 #ifndef INCLUDE_DISTORTOS_FILESYSTEM_LITTLEFS1_LITTLEFS1FILE_HPP_
13 #define INCLUDE_DISTORTOS_FILESYSTEM_LITTLEFS1_LITTLEFS1FILE_HPP_
14 
16 
18 
19 #include "lfs1.h"
20 
21 #include <memory>
22 
23 namespace distortos
24 {
25 
26 class Littlefs1FileSystem;
27 
34 class Littlefs1File : public File
35 {
36  friend class Littlefs1FileSystem;
37 
38 public:
39 
46  ~Littlefs1File() override;
47 
65  int close() override;
66 
80  std::pair<int, off_t> getPosition() override;
81 
93  std::pair<int, off_t> getSize() override;
94 
112  int getStatus(struct stat& status) override;
113 
127  std::pair<int, bool> isATerminal() override;
128 
144  void lock() override;
145 
164  std::pair<int, size_t> read(void* buffer, size_t size) override;
165 
179  int rewind() override;
180 
199  std::pair<int, off_t> seek(Whence whence, off_t offset) override;
200 
214  int synchronize() override;
215 
226  void unlock() override;
227 
246  std::pair<int, size_t> write(const void* buffer, size_t size) override;
247 
248 private:
249 
256  constexpr explicit Littlefs1File(Littlefs1FileSystem& fileSystem) :
257  buffer_{},
258  configuration_{},
259  file_{},
260  fileSystem_{fileSystem},
261  opened_{}
262  {
263 
264  }
265 
282  int open(const char* path, int flags);
283 
285  std::unique_ptr<uint8_t[]> buffer_;
286 
288  lfs1_file_config configuration_;
289 
291  lfs1_file_t file_;
292 
295 
297  bool opened_;
298 };
299 
300 } // namespace distortos
301 
302 #endif // INCLUDE_DISTORTOS_FILESYSTEM_LITTLEFS1_LITTLEFS1FILE_HPP_
int rewind() override
Resets current file offset.
Definition: Littlefs1File.cpp:113
std::pair< int, off_t > getPosition() override
Returns current file offset.
Definition: Littlefs1File.cpp:47
Whence
seek() mode of operation
Definition: File.hpp:33
std::pair< int, size_t > write(const void *buffer, size_t size) override
Writes data to file.
Definition: Littlefs1File.cpp:153
std::pair< int, off_t > seek(Whence whence, off_t offset) override
Moves file offset.
Definition: Littlefs1File.cpp:123
Definition: File.hpp:28
std::pair< int, bool > isATerminal() override
Tells whether the file is a terminal.
Definition: Littlefs1File.cpp:85
Littlefs1FileSystem & fileSystem_
reference to owner file system
Definition: Littlefs1File.hpp:294
std::pair< int, size_t > read(void *buffer, size_t size) override
Reads data from file.
Definition: Littlefs1File.cpp:99
void unlock() override
Unlocks the file which was previously locked by current thread.
Definition: Littlefs1File.cpp:148
std::unique_ptr< uint8_t[]> buffer_
file buffer
Definition: Littlefs1File.hpp:285
File class header.
lfs1_file_t file_
littlefs-v1 file
Definition: Littlefs1File.hpp:291
int synchronize() override
Synchronizes state of a file, ensuring all cached writes are finished.
Definition: Littlefs1File.cpp:138
int open(const char *path, int flags)
Opens file.
Definition: Littlefs1File.cpp:171
lfs1_file_config configuration_
littlefs-v1 file configuration
Definition: Littlefs1File.hpp:288
bool opened_
true if file is opened, false otherwise
Definition: Littlefs1File.hpp:297
distortos configuration
Top-level namespace of distortos project.
Definition: buttons.hpp:33
int close() override
Closes file.
Definition: Littlefs1File.cpp:36
Definition: Littlefs1File.hpp:34
Definition: Littlefs1FileSystem.hpp:37
std::pair< int, off_t > getSize() override
Returns size of file.
Definition: Littlefs1File.cpp:60
void lock() override
Locks the file for exclusive use by current thread.
Definition: Littlefs1File.cpp:94
~Littlefs1File() override
Littlefs1File's destructor.
Definition: Littlefs1File.cpp:31
constexpr Littlefs1File(Littlefs1FileSystem &fileSystem)
Littlefs1File's constructor.
Definition: Littlefs1File.hpp:256
int getStatus(struct stat &status) override
Returns status of file.
Definition: Littlefs1File.cpp:73