F´ Flight Software - C/C++ Documentation  NASA-v2.0.1
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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