Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
CC32xxDeviceFile Class Reference

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

#include <CC32xxDeviceFile.hxx>

Inheritance diagram for CC32xxDeviceFile:
DeviceFile Node Device FileIO

Public Member Functions

 CC32xxDeviceFile (const char *name, size_t max_size_on_create=3000)
 Constructor.
 
 ~CC32xxDeviceFile ()
 Destructor.
 
- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 

Protected Member Functions

ssize_t write (unsigned int index, const void *buf, size_t len) override
 Write to the CC32xxDeviceFile.
 
ssize_t read (unsigned int index, void *buf, size_t len) override
 Read from the CC32xxDeviceFile.
 
- Protected Member Functions inherited from DeviceFile
 DeviceFile (const char *name)
 Constructor.
 
 ~DeviceFile ()
 Destructor.
 
int open (File *file, const char *path, int flags, int mode) OVERRIDE
 Open a device.
 
- 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.
 

Private Member Functions

int open (File *file, const char *path, int flags, int mode) override
 Open a device.
 
int fstat (File *file, struct stat *stat) override
 Get the status information of a file or device.
 
void disable () OVERRIDE
 function to disable device
 
 CC32xxDeviceFile ()
 Default constructor.
 
 DISALLOW_COPY_AND_ASSIGN (CC32xxDeviceFile)
 

Private Attributes

int32_t handle
 file handle
 
uint32_t size
 size of file in bytes
 
uint32_t maxSize
 max size of file in bytes
 
int32_t maxSizeOnCreate
 max size of file upon creation
 
bool writeEnable
 is the file open for write
 

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 CC32xxDeviceFile access.

Definition at line 41 of file CC32xxDeviceFile.hxx.

Constructor & Destructor Documentation

◆ CC32xxDeviceFile()

CC32xxDeviceFile::CC32xxDeviceFile ( const char *  name,
size_t  max_size_on_create = 3000 
)
inline

Constructor.

Parameters
namedevice file name
max_size_on_createthis is the maximum size of the file allocated when it is created

Definition at line 49 of file CC32xxDeviceFile.hxx.

◆ ~CC32xxDeviceFile()

CC32xxDeviceFile::~CC32xxDeviceFile ( )
inline

Destructor.

Definition at line 61 of file CC32xxDeviceFile.hxx.

Member Function Documentation

◆ disable()

void CC32xxDeviceFile::disable ( )
privatevirtual

function to disable device

Implements Node.

Definition at line 163 of file CC32xxDeviceFile.cxx.

◆ fstat()

int CC32xxDeviceFile::fstat ( File file,
struct stat stat 
)
overrideprivatevirtual

Get the status information of a file or device.

Parameters
filefile reference for this device
statstructure to fill status info into
Returns
0 upon successor or negative error number upon error.

Reimplemented from Node.

Definition at line 218 of file CC32xxDeviceFile.cxx.

◆ open()

int CC32xxDeviceFile::open ( File file,
const char *  path,
int  flags,
int  mode 
)
overrideprivatevirtual

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 46 of file CC32xxDeviceFile.cxx.

◆ read()

ssize_t CC32xxDeviceFile::read ( unsigned int  index,
void *  buf,
size_t  len 
)
overrideprotectedvirtual

Read from the CC32xxDeviceFile.

Parameters
indexindex within CC32xxDeviceFile address space to start read
buflocation to post read data
lenlength in bytes of data to read
Returns
number of bytes read upon success, -errno upon failure

Implements DeviceFile.

Definition at line 198 of file CC32xxDeviceFile.cxx.

◆ write()

ssize_t CC32xxDeviceFile::write ( unsigned int  index,
const void *  buf,
size_t  len 
)
overrideprotectedvirtual

Write to the CC32xxDeviceFile.

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 CC32xxDeviceFile address space to start write
bufdata to write
lenlength in bytes of data to write
Returns
number of bytes written upon success, -errno upon failure

Implements DeviceFile.

Definition at line 176 of file CC32xxDeviceFile.cxx.

Member Data Documentation

◆ handle

int32_t CC32xxDeviceFile::handle
private

file handle

Definition at line 106 of file CC32xxDeviceFile.hxx.

◆ maxSize

uint32_t CC32xxDeviceFile::maxSize
private

max size of file in bytes

Definition at line 112 of file CC32xxDeviceFile.hxx.

◆ maxSizeOnCreate

int32_t CC32xxDeviceFile::maxSizeOnCreate
private

max size of file upon creation

Definition at line 115 of file CC32xxDeviceFile.hxx.

◆ size

uint32_t CC32xxDeviceFile::size
private

size of file in bytes

Definition at line 109 of file CC32xxDeviceFile.hxx.

◆ writeEnable

bool CC32xxDeviceFile::writeEnable
private

is the file open for write

Definition at line 118 of file CC32xxDeviceFile.hxx.


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