Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
EEPROM Class Referenceabstract

Common base class for all EEPROM access. More...

#include <EEPROM.hxx>

Inheritance diagram for EEPROM:
Node Device FileIO CC32xxEEPROMEmulation EEPROMEmulation LpcEEPROMEmulation MyEEPROM Stm32EEPROMEmulation TivaEEPROMEmulation

Public Member Functions

 EEPROM (const char *name, size_t file_size)
 Constructor.
 
virtual void write (unsigned int index, const void *buf, size_t len)=0
 Override this function to write data to the eeprom.
 
virtual void read (unsigned int index, void *buf, size_t len)=0
 Override this function to read data from the eeprom.
 
size_t file_size ()
 
- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 

Protected Member Functions

 EEPROM (const char *name, size_t file_size)
 Constructor.
 
 ~EEPROM ()
 Destructor.
 
virtual void write (unsigned int index, const void *buf, size_t len)=0
 Write to the EEPROM.
 
virtual void read (unsigned int index, void *buf, size_t len)=0
 Read from the EEPROM.
 
size_t file_size ()
 Get the maximum file size of the EEPROM file.
 
- 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.
 
virtual int fstat (File *file, struct stat *stat) override
 Get the status information of a file or device.
 
- Protected Member Functions inherited from FileIO
 FileIO (const char *name)
 Constructor.
 
virtual ~FileIO ()
 Destructor.
 
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.
 

Private Member Functions

int open (File *file, const char *path, int flags, int mode) OVERRIDE
 Open a device.
 
ssize_t read (File *file, void *buf, size_t count) OVERRIDE
 Read from a file or device.
 
ssize_t write (File *file, const void *buf, size_t count) OVERRIDE
 Write to a file or device.
 
off_t lseek (File *file, off_t offset, int whence) OVERRIDE
 Seek method.
 
void enable () OVERRIDE
 function to enable device
 
void disable () OVERRIDE
 This will be called when reference count goes from non-zero to 0.
 
void flush_buffers () OVERRIDE
 function to disable device
 
 EEPROM ()
 Default constructor.
 
 DISALLOW_COPY_AND_ASSIGN (EEPROM)
 

Private Attributes

size_t fileSize
 Maximum file size we can grow to.
 

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.
 
- 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 Filefile_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
 

Detailed Description

Common base class for all EEPROM access.

Definition at line 43 of file EEPROM.hxx.

Constructor & Destructor Documentation

◆ EEPROM() [1/2]

EEPROM::EEPROM ( const char *  name,
size_t  file_size 
)
inlineprotected

Constructor.

Parameters
namedevice name
file_sizemaximum file size that we can grow to.

Definition at line 50 of file EEPROM.hxx.

◆ ~EEPROM()

EEPROM::~EEPROM ( )
inlineprotected

Destructor.

Definition at line 58 of file EEPROM.hxx.

◆ EEPROM() [2/2]

EEPROM::EEPROM ( const char *  name,
size_t  file_size 
)
inline

Constructor.

Parameters
nameThe name of the device node in the filesystem, e.g. /dev/eeprom
file_sizehow many bytes are in the eeprom (real or emulated).

Definition at line 16 of file EEPROMEmuTest.hxx.

Member Function Documentation

◆ disable()

void EEPROM::disable ( )
inlineprivatevirtual

This will be called when reference count goes from non-zero to 0.

Called with lock_ held.

Implements Node.

Definition at line 124 of file EEPROM.hxx.

◆ enable()

void EEPROM::enable ( )
inlineprivatevirtual

function to enable device

Implements Node.

Definition at line 123 of file EEPROM.hxx.

◆ file_size() [1/2]

size_t EEPROM::file_size ( )
inlineprotected

Get the maximum file size of the EEPROM file.

Returns
maximum file size we can grow to

Definition at line 81 of file EEPROM.hxx.

◆ file_size() [2/2]

size_t EEPROM::file_size ( )
inline
Returns
the eeprom size.

Definition at line 42 of file EEPROMEmuTest.hxx.

◆ flush_buffers()

void EEPROM::flush_buffers ( )
inlineprivatevirtual

function to disable device

Discards all pending buffers. Called after disable().

Implements Node.

Definition at line 127 of file EEPROM.hxx.

◆ lseek()

off_t EEPROM::lseek ( File file,
off_t  offset,
int  whence 
)
privatevirtual

Seek method.

Parameters
filefile reference for this device
offsetoffset in bytes from whence directive
whenceSEEK_SET if to set the file offset to an abosolute position, SEEK_CUR if to set the file offset from current position
Returns
current offest, or -1 with errno set upon error.

Reimplemented from FileIO.

Definition at line 45 of file EEPROM.cxx.

◆ open()

int EEPROM::open ( File file,
const char *  path,
int  flags,
int  mode 
)
privatevirtual

Open a device.

Parameters
filenew file reference to this device
pathfile or device name
flagsopen flags
modeopen mode
Returns
0 upon success, negative errno upon failure

Implements FileIO.

Definition at line 66 of file EEPROM.cxx.

◆ read() [1/3]

ssize_t EEPROM::read ( File file,
void *  buf,
size_t  count 
)
privatevirtual

Read from a file or device.

Parameters
filefile reference for this device
buflocation to place read data
countnumber of bytes to read
Returns
number of bytes read upon success, -errno upon failure

Implements FileIO.

Definition at line 89 of file EEPROM.cxx.

◆ read() [2/3]

virtual void EEPROM::read ( unsigned int  index,
void *  buf,
size_t  len 
)
protectedpure virtual

Read from the EEPROM.

Parameters
indexindex within EEPROM address space to start read
buflocation to post read data
lenlength in bytes of data to read

Implemented in CC32xxEEPROMEmulation, and EEPROMEmulation.

◆ read() [3/3]

virtual void EEPROM::read ( unsigned int  index,
void *  buf,
size_t  len 
)
pure virtual

Override this function to read data from the eeprom.

Has to function synchronously.

Parameters
indexoffset where to read data from inside the file. [0..file_size).
bufwhere to read data to
lenhow many bytes to read

Implemented in CC32xxEEPROMEmulation, and EEPROMEmulation.

◆ write() [1/3]

ssize_t EEPROM::write ( File file,
const void *  buf,
size_t  count 
)
privatevirtual

Write to a file or device.

Parameters
filefile reference for this device
buflocation to find write data
countnumber of bytes to write
Returns
number of bytes written upon success, -errno upon failure

Implements FileIO.

Definition at line 119 of file EEPROM.cxx.

◆ write() [2/3]

virtual void EEPROM::write ( unsigned int  index,
const void *  buf,
size_t  len 
)
protectedpure virtual

Write to the EEPROM.

NOTE!!! This is not necessarily atomic across byte boundaries in the case of power loss. The user should take this into account as it relates to data integrity of a whole block.

Parameters
indexindex within EEPROM address space to start write
bufdata to write
lenlength in bytes of data to write

Implemented in CC32xxEEPROMEmulation, and EEPROMEmulation.

◆ write() [3/3]

virtual void EEPROM::write ( unsigned int  index,
const void *  buf,
size_t  len 
)
pure virtual

Override this function to write data to the eeprom.

Has to function synchronously.

Parameters
indexoffset where to write data to inside the file. [0..file_size).
bufdata to write
lenhow many bytes to write

Implemented in CC32xxEEPROMEmulation, and EEPROMEmulation.

Member Data Documentation

◆ fileSize

size_t EEPROM::fileSize
private

Maximum file size we can grow to.

size of the eeprom.

Definition at line 87 of file EEPROM.hxx.


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