FileDevice.h
Go to the documentation of this file.
1 
20 #include <Storage/CustomDevice.h>
21 #include "../IFS/FileSystem.h"
22 
23 namespace Storage
24 {
29 class FileDevice : public CustomDevice
30 {
31 public:
32  FileDevice(const String& name, IFS::IFileSystem& fileSys, IFS::FileHandle file, size_t size)
33  : name(name), size(size), fileSystem(fileSys), file(file)
34  {
35  }
36 
37  FileDevice(const String& name, IFS::IFileSystem& fileSys, IFS::FileHandle file)
38  : name(name), fileSystem(fileSys), file(file)
39  {
40  size = IFS::FileSystem::cast(fileSys).getSize(file);
41  }
42 
44  {
45  fileSystem.close(file);
46  }
47 
48  String getName() const override
49  {
50  return name.c_str();
51  }
52 
53  Type getType() const override
54  {
55  return Type::file;
56  }
57 
58  size_t getSize() const override
59  {
60  return size;
61  }
62 
63  size_t getBlockSize() const override
64  {
65  return sizeof(uint32_t);
66  }
67 
68  bool read(uint32_t address, void* buffer, size_t len) override;
69  bool write(uint32_t address, const void* data, size_t len) override;
70  bool erase_range(uint32_t address, size_t len) override;
71 
72 private:
73  CString name;
74  size_t size;
75  IFS::IFileSystem& fileSystem;
76  IFS::FileHandle file;
77 };
78 
79 } // namespace Storage
virtual int close(FileHandle file)=0
close an open file
~FileDevice()
Definition: FileDevice.h:43
size_t getSize() const override
Obtain addressable size of this device.
Definition: FileDevice.h:58
Installable File System base class.
Definition: IFileSystem.h:95
Read-only partition on a stream object.
Definition: FileDevice.h:29
bool erase_range(uint32_t address, size_t len) override
Erase a region of storage in preparation for writing.
static constexpr FileSystem & cast(IFileSystem &fs)
Definition: Components/IFS/src/include/IFS/FileSystem.h:42
FileDevice(const String &name, IFS::IFileSystem &fileSys, IFS::FileHandle file, size_t size)
Definition: FileDevice.h:32
FileDevice(const String &name, IFS::IFileSystem &fileSys, IFS::FileHandle file)
Definition: FileDevice.h:37
The String class.
Definition: WString.h:136
Class to support dynamic partitions.
Definition: CustomDevice.h:16
Type
Storage type.
Definition: Components/Storage/src/include/Storage/Device.h:41
int16_t FileHandle
File handle.
Definition: Stat.h:39
Type getType() const override
Obtain device type.
Definition: FileDevice.h:53
Class to manage a NUL-terminated C-style string When storing persistent strings in RAM the regular St...
Definition: CString.h:26
size_t getBlockSize() const override
Obtain smallest allocation unit for erase operations.
Definition: FileDevice.h:63
const char * c_str() const
Definition: CString.h:94
uint32_t getSize(FileHandle file)
Get size of file.
bool write(uint32_t address, const void *data, size_t len) override
Write data to the storage device.
String getName() const override
Obtain unique device name.
Definition: FileDevice.h:48
bool read(uint32_t address, void *buffer, size_t len) override
Read data from the storage device.
Definition: FileDevice.h:23