F´ Flight Software - C/C++ Documentation  NASA-v2.1.0
A framework for building embedded system applications to NASA flight quality standards.
File.hpp
Go to the documentation of this file.
1 #ifndef _File_hpp_
2 #define _File_hpp_
3 
4 #include <FpConfig.hpp>
6 
7 namespace Os {
8 
9  // This class encapsulates a very simple file interface that has the most often-used features
10 
11  class File {
12  public:
13 
14  typedef enum {
22  } Mode;
23 
24  typedef enum {
33  } Status;
34 
35  File();
36  virtual ~File();
38  Status open(const char* fileName, Mode mode);
39  Status open(const char* fileName, Mode mode, bool include_excl);
40  bool isOpen(void);
41  Status seek(NATIVE_INT_TYPE offset, bool absolute = true);
42  Status flush();
43  Status read(void * buffer, NATIVE_INT_TYPE &size, bool waitForFull = true);
44  // size is modified to actual read size
46  Status write(const void * buffer, NATIVE_INT_TYPE &size, bool waitForDone = true);
47  Status bulkWrite(const void * buffer, NATIVE_UINT_TYPE &totalSize, NATIVE_INT_TYPE chunkSize);
48 
49  void close(void);
50 
52  const char* getLastErrorString(void);
53  Status calculateCRC32(U32 &crc);
54 
55  static Status niceCRC32(U32 &crc, const char* fileName);
56 
57  private:
58 
59  NATIVE_INT_TYPE m_fd;
60  Mode m_mode;
61  NATIVE_INT_TYPE m_lastError;
62 
63  };
64 
65 }
66 
67 #endif
Os::File::BAD_SIZE
@ BAD_SIZE
Invalid size parameter.
Definition: File.hpp:29
Os::File::bulkWrite
Status bulkWrite(const void *buffer, NATIVE_UINT_TYPE &totalSize, NATIVE_INT_TYPE chunkSize)
write size; will return amount written or errno
Definition: File.cpp:317
Os
Definition: File.cpp:7
Os::File::NO_SPACE
@ NO_SPACE
No space left.
Definition: File.hpp:27
Os::File::calculateCRC32
Status calculateCRC32(U32 &crc)
calculates the CRC32 of the file
Definition: File.cpp:421
Os::File::NO_PERMISSION
@ NO_PERMISSION
No permission to read/write file.
Definition: File.hpp:28
Os::File::niceCRC32
static Status niceCRC32(U32 &crc, const char *fileName)
Calculates CRC32 of file, not burdening FS.
Definition: FileCommon.cpp:17
Os::File::OPEN_NO_MODE
@ OPEN_NO_MODE
File mode not yet selected.
Definition: File.hpp:15
Os::File::close
void close(void)
close file
Definition: File.cpp:37
Os::File::prealloc
Status prealloc(NATIVE_INT_TYPE offset, NATIVE_INT_TYPE len)
Definition: File.cpp:119
Os::File::read
Status read(void *buffer, NATIVE_INT_TYPE &size, bool waitForFull=true)
waitForFull = true to wait for all bytes to be read
Definition: File.cpp:29
Os::File::FILE_EXISTS
@ FILE_EXISTS
file already exist (for CREATE with O_EXCL enabled)
Definition: File.hpp:31
Os::File::OTHER_ERROR
@ OTHER_ERROR
A catch-all for other errors. Have to look in implementation-specific code.
Definition: File.hpp:32
Os::File::NOT_OPENED
@ NOT_OPENED
file hasn't been opened yet
Definition: File.hpp:30
Os::File::File
File()
Constructor.
Definition: File.cpp:9
Os::File::write
Status write(const void *buffer, NATIVE_INT_TYPE &size, bool waitForDone=true)
write size; will return amount written or errno
Definition: File.cpp:33
Os::File::DOESNT_EXIST
@ DOESNT_EXIST
File doesn't exist (for read)
Definition: File.hpp:26
Os::File::getLastErrorString
const char * getLastErrorString(void)
get a string of the last error (typically from strerror)
Definition: File.cpp:43
Os::File::OPEN_WRITE
@ OPEN_WRITE
Open file for writing.
Definition: File.hpp:17
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
Os::File::seek
Status seek(NATIVE_INT_TYPE offset, bool absolute=true)
seek to location. If absolute = true, absolute from beginning of file
Definition: File.cpp:25
Os::File::OPEN_APPEND
@ OPEN_APPEND
Open file for appending.
Definition: File.hpp:21
Os::File::open
Status open(const char *fileName, Mode mode)
open file. Writing creates file if it doesn't exist
Definition: File.cpp:13
Os::File::OPEN_SYNC_DIRECT_WRITE
@ OPEN_SYNC_DIRECT_WRITE
Open file for writing, bypassing all caching. Requires data alignment.
Definition: File.hpp:19
Os::File::isOpen
bool isOpen(void)
check if file descriptor is open or not.
Definition: File.cpp:21
FpConfig.hpp
ISF configuration file.
Os::File::flush
Status flush()
flush data to disk. No-op on systems that do not support.
Definition: File.cpp:383
Os::File::OPEN_CREATE
@ OPEN_CREATE
Open file for writing and truncates file if it exists, ie same flags as creat()
Definition: File.hpp:20
Os::File::Status
Status
Definition: File.hpp:24
Os::File::~File
virtual ~File()
Destructor. Will close file if still open.
Definition: File.cpp:11
BasicTypes.hpp
Declares ISF basic types.
Os::File::OP_OK
@ OP_OK
Operation was successful.
Definition: File.hpp:25
Os::File::getLastError
NATIVE_INT_TYPE getLastError(void)
read back last error code (typically errno)
Definition: File.cpp:39
NATIVE_INT_TYPE
int NATIVE_INT_TYPE
native integer type declaration
Definition: BasicTypes.hpp:29
Os::File::OPEN_READ
@ OPEN_READ
Open file for reading.
Definition: File.hpp:16
Os::File::OPEN_SYNC_WRITE
@ OPEN_SYNC_WRITE
Open file for writing; writes don't return until data is on disk.
Definition: File.hpp:18
Os::File
Definition: File.hpp:11
Os::File::Mode
Mode
Definition: File.hpp:14