|
Open Model Railroad Network (OpenMRN)
|
FlashFile is a driver for a single file that is backed by flash. More...
#include <FlashFile.hxx>
Public Member Functions | |
| FlashFile (const char *name, FLASH *flash, size_t address, size_t size) | |
| Constructor. | |
| int | open (File *file, const char *path, int flags, int mode) override |
| Overrides behavior of open for O_TRUNC. | |
| int | fstat (File *file, struct stat *stat) override |
| Implements querying the file size. | |
| ssize_t | write (unsigned int index, const void *buf, size_t len) override |
| Write to the flash. | |
| ssize_t | read (unsigned int index, void *buf, size_t len) override |
| Read from the flash. | |
Public Member Functions inherited from Device | |
| Device (const char *name) | |
| Constructor. | |
| virtual | ~Device () |
| Destructor. | |
Private Attributes | |
| FLASH * | flash_ |
| Accessor to the flash device. | |
| size_t | flashStart_ |
| Offset where our file start on flash. | |
| size_t | size_ |
| How many bytes our file is on flash. | |
Additional Inherited Members | |
Static Public Member Functions inherited from Device | |
| static int | open (struct _reent *reent, const char *path, int flags, int mode) |
| Open a file or device. | |
| static int | close (struct _reent *reent, int fd) |
| Close a file or device. | |
| static int | stat (struct _reent *reent, const char *path, struct stat *stat) |
| Get the status information of a file or device. | |
| static int | select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, long long timeout) |
| POSIX select(). | |
| static void | select_clear () |
| Clears the current thread's select bits. | |
Static Public Member Functions inherited from FileIO | |
| static ssize_t | read (struct _reent *reent, int fd, void *buf, size_t count) |
| Read from a file or device. | |
| static ssize_t | write (struct _reent *reent, int fd, const void *buf, size_t count) |
| Write to a file or device. | |
| static _off_t | lseek (struct _reent *reent, int fd, _off_t offset, int whence) |
| Change the offset index of a file or device. | |
| static int | fstat (struct _reent *reent, int fd, struct stat *stat) |
| Get the status information of a file or device. | |
| static int | ioctl (int fd, unsigned long int key, unsigned long data) |
| Request and ioctl transaction. | |
| static int | fcntl (int fd, int cmd, unsigned long data) |
| Manipulate a file descriptor. | |
| static bool | is_device (int fd) |
| Test if the file descriptor belongs to a device. | |
Protected Member Functions inherited from DeviceFile | |
| DeviceFile (const char *name) | |
| Constructor. | |
| ~DeviceFile () | |
| Destructor. | |
Protected Member Functions inherited from Node | |
| Node (const char *name) | |
| Constructor. | |
| virtual | ~Node () |
| Destructor. | |
| int | open (File *, const char *, int, int) OVERRIDE |
| Open method. | |
| int | close (File *) OVERRIDE |
| Close method. | |
Protected Member Functions inherited from FileIO | |
| FileIO (const char *name) | |
| Constructor. | |
| virtual | ~FileIO () |
| Destructor. | |
| virtual off_t | lseek (File *f, off_t offset, int whence) |
| Seek method. | |
| virtual int | ioctl (File *file, unsigned long int key, unsigned long data) |
| Request an ioctl transaction. | |
| virtual int | fcntl (File *file, int cmd, unsigned long data) |
| Manipulate a file descriptor. | |
| virtual bool | select (File *file, int mode) |
| Device select method. | |
Static Protected Member Functions inherited from Device | |
| static void | select_insert (SelectInfo *info) |
| Add client to list of clients needing woken. | |
| static void | select_wakeup (SelectInfo *info) |
| Wakeup the list of clients needing woken. | |
| static void | select_wakeup_from_isr (SelectInfo *info, int *woken) |
| Wakeup the list of clients needing woken. | |
Static Protected Member Functions inherited from FileIO | |
| static int | fd_alloc (void) |
| Allocate a free file descriptor. | |
| static void | fd_free (int fd) |
| Free up a file descriptor. | |
| static File * | file_lookup (int fd) |
| Looks up a reference to a File corresponding to a given file descriptor. | |
| static int | fd_lookup (File *file) |
| Looks up a file descriptor corresponding to a given File reference. | |
Protected Attributes inherited from Node | |
| OSMutex | lock_ |
| protects internal structures. | |
| mode_t | mode_ |
| File open mode, such as O_NONBLOCK. | |
| unsigned int | references_ |
| number of open references | |
Protected Attributes inherited from FileIO | |
| const char * | name |
| device name | |
Static Protected Attributes inherited from FileIO | |
| static const unsigned int | numOpenFiles = 20 |
| static File | files [] |
| File descriptor pool. | |
| static OSMutex | mutex |
| mutual exclusion for fileio | |
FlashFile is a driver for a single file that is backed by flash.
Instantiations may use serial flash (using SPIFlash) or internal flash.
There are limitations on writes.
Definition at line 59 of file FlashFile.hxx.
|
inline |
Constructor.
| name | what should be the name of this file be (to pass to open). |
| flash | accessor object to the backing flash. One such object can be used for multiple FlashFiles. The flash object shall do locking internally. |
| address | where does the data of this file start. Must be aligned on a sector boundary on the flash device. The unit is whatever address the flash driver understands. |
| size | maximum size of this file on flash. |
Definition at line 71 of file FlashFile.hxx.
|
inlineoverridevirtual |
Implements querying the file size.
Reimplemented from Node.
Definition at line 95 of file FlashFile.hxx.
|
inlineoverridevirtual |
Overrides behavior of open for O_TRUNC.
Reimplemented from DeviceFile.
Definition at line 83 of file FlashFile.hxx.
|
inlineoverridevirtual |
Read from the flash.
| index | index within DeviceFile address space to start read |
| buf | location to post read data |
| len | length in bytes of data to read |
Implements DeviceFile.
Definition at line 139 of file FlashFile.hxx.
|
inlineoverridevirtual |
Write to the flash.
| index | index within the file address space to start write |
| buf | data to write |
| len | length in bytes of data to write |
Writing at the beginning of a sector. Need an erase.
Implements DeviceFile.
Definition at line 107 of file FlashFile.hxx.
|
private |
Accessor to the flash device.
Definition at line 156 of file FlashFile.hxx.
|
private |
Offset where our file start on flash.
Definition at line 158 of file FlashFile.hxx.
|
private |
How many bytes our file is on flash.
Definition at line 160 of file FlashFile.hxx.