F´ Flight Software - C/C++ Documentation
devel
A framework for building embedded system applications to NASA flight quality standards.
|
#include <Os/File.hpp>
Public Member Functions | |
File () | |
constructor More... | |
~File () final | |
destructor More... | |
File (const File &other) | |
copy constructor that copies the internal representation More... | |
File & | operator= (const File &other) |
assignment operator that copies the internal representation More... | |
bool | isOpen () const |
determine if the file is open More... | |
Os::FileInterface::Status | open (const char *path, Mode mode) |
open file with supplied path and mode More... | |
Status | read (U8 *buffer, FwSignedSizeType &size) |
read data from this file into supplied buffer bounded by size More... | |
Status | write (const U8 *buffer, FwSignedSizeType &size) |
write data to this file from the supplied buffer bounded by size More... | |
Os::FileInterface::Status | open (const char *path, Mode mode, OverwriteType overwrite) override |
open file with supplied path and mode More... | |
void | close () override |
close the file, if not opened then do nothing More... | |
Status | size (FwSignedSizeType &size_result) override |
get size of currently open file More... | |
Status | position (FwSignedSizeType &position_result) override |
get file pointer position of the currently open file More... | |
Status | preallocate (FwSignedSizeType offset, FwSignedSizeType length) override |
pre-allocate file storage More... | |
Status | seek (FwSignedSizeType offset, SeekType seekType) override |
seek the file pointer to the given offset More... | |
Status | flush () override |
flush file contents to storage More... | |
Status | read (U8 *buffer, FwSignedSizeType &size, WaitType wait) override |
read data from this file into supplied buffer bounded by size More... | |
Status | readline (U8 *buffer, FwSignedSizeType &size, WaitType wait) |
read a line from the file using \n as the delimiter More... | |
Status | write (const U8 *buffer, FwSignedSizeType &size, WaitType wait) override |
read data from this file into supplied buffer bounded by size More... | |
FileHandle * | getHandle () override |
returns the raw file handle More... | |
Status | calculateCrc (U32 &crc) |
calculate the CRC32 of the entire file More... | |
Status | incrementalCrc (FwSignedSizeType &size) |
calculate the CRC32 of the next section of data More... | |
Status | finalizeCrc (U32 &crc) |
finalize and retrieve the CRC value More... | |
Public Member Functions inherited from Os::FileInterface | |
virtual | ~FileInterface ()=default |
Additional Inherited Members | |
Public Types inherited from Os::FileInterface | |
enum | Mode { OPEN_NO_MODE , OPEN_READ , OPEN_CREATE , OPEN_WRITE , OPEN_SYNC_WRITE , OPEN_APPEND , MAX_OPEN_MODE } |
enum | Status { OP_OK , DOESNT_EXIST , NO_SPACE , NO_PERMISSION , BAD_SIZE , NOT_OPENED , FILE_EXISTS , NOT_SUPPORTED , INVALID_MODE , INVALID_ARGUMENT , OTHER_ERROR , MAX_STATUS } |
enum | OverwriteType { NO_OVERWRITE , OVERWRITE , MAX_OVERWRITE_TYPE } |
enum | SeekType { RELATIVE , ABSOLUTE , MAX_SEEK_TYPE } |
enum | WaitType { NO_WAIT , WAIT , MAX_WAIT_TYPE } |
Static Public Member Functions inherited from Os::FileInterface | |
static FileInterface * | getDelegate (FileHandleStorage &aligned_placement_new_memory, const FileInterface *to_copy=nullptr) |
provide a pointer to a file delegate object More... | |
|
final |
Os::File::File | ( | const File & | other | ) |
File::Status Os::File::calculateCrc | ( | U32 & | crc | ) |
calculate the CRC32 of the entire file
Calculates the CRC32 of the file's contents. The crc
parameter will be updated to contain the CRC or 0 on failure. Status will represent failure conditions. This call will be decomposed into calculations on sections of the file FW_FILE_CHUNK_SIZE
bytes long.
This function requires that the file already be opened for "READ" mode.
On error crc will be set to 0.
This function is equivalent to the following pseudo-code:
crc | U32 bit value to fill with CRC |
|
overridevirtual |
close the file, if not opened then do nothing
Closes the file, if open. Otherwise this function does nothing. Delegates to the chosen implementation's closeInternal
function. mode
is set to OPEN_NO_MODE
.
Implements Os::FileInterface.
File::Status Os::File::finalizeCrc | ( | U32 & | crc | ) |
finalize and retrieve the CRC value
Finalizes the CRC computation and returns the CRC value. The crc
value will be modified to contain the crc or 0 on error. Note: this will reset any active CRC calculation and effectively re-initializes any incrementalCrc
calculation.
On error crc will be set to 0.
crc | value to fill |
|
overridevirtual |
flush file contents to storage
Flushes the file contents to storage (i.e. out of the OS cache to disk). Does nothing in implementations that do not support flushing.
Implements Os::FileInterface.
|
overridevirtual |
returns the raw file handle
Gets the raw file handle from the implementation. Note: users must include the implementation specific header to make any real use of this handle. Otherwise it//!must* be passed as an opaque type.
Implements Os::FileInterface.
File::Status Os::File::incrementalCrc | ( | FwSignedSizeType & | size | ) |
calculate the CRC32 of the next section of data
Starting at the current file pointer, this will add size
bytes of data to the currently calculated CRC. Call finalizeCrc
to retrieve the CRC or calculateCrc
to perform a CRC on the entire file. This call will not block waiting for data on the underlying read, nor will it reset the file position pointer. On error, the current CRC results should be discarded by reopening the file or calling finalizeCrc
and discarding its result. size
will be updated with the size
actually read and used in the CRC calculation.
This function requires that the file already be opened for "READ" mode.
It is illegal for size to be less than or equal to 0 or greater than FW_FILE_CHUNK_SIZE.
size | size of data to read for CRC |
bool Os::File::isOpen | ( | ) | const |
File::Status Os::File::open | ( | const char * | path, |
File::Mode | requested_mode | ||
) |
open file with supplied path and mode
Open the file passed in with the given mode. Opening files with OPEN_CREATE
mode will not clobber existing files. Use other open
method to set overwrite flag and clobber existing files. The status of the open request is returned from the function call. Delegates to the chosen implementation's open
function.
It is invalid to send nullptr
as the path. It is invalid to supply mode
as a non-enumerated value.
path | c-string of path to open |
mode | file operation mode |
|
overridevirtual |
open file with supplied path and mode
Open the file passed in with the given mode. If overwrite is set to OVERWRITE, then opening files in OPEN_CREATE mode will clobber existing files. Set overwrite to NO_OVERWRITE to preserve existing files. The status of the open request is returned from the function call. Delegates to the chosen implementation's open
function.
It is invalid to send nullptr
as the path. It is invalid to supply mode
as a non-enumerated value. It is invalid to supply overwrite
as a non-enumerated value.
path | c-string of path to open |
mode | file operation mode |
overwrite | overwrite existing file on create |
Implements Os::FileInterface.
|
overridevirtual |
get file pointer position of the currently open file
Get the current position of the read/write pointer of the open file.
position | output parameter for size. |
Implements Os::FileInterface.
|
overridevirtual |
pre-allocate file storage
Pre-allocates file storage with at least length
storage starting at offset
. No-op on implementations that cannot pre-allocate.
It is invalid to pass a negative offset
. It is invalid to pass a negative length
.
offset | offset into file |
length | length after offset to preallocate |
Implements Os::FileInterface.
File::Status Os::File::read | ( | U8 * | buffer, |
FwSignedSizeType & | size | ||
) |
read data from this file into supplied buffer bounded by size
Read data from this file up to the size
and store it in buffer
. This version will will block until the requested size has been read successfully read or the end of the file has been reached.
size
will be updated to the count of bytes actually read. Status will reflect the success/failure of the read operation.
It is invalid to pass nullptr
to this function call. It is invalid to pass a negative size
.
buffer | memory location to store data read from file |
size | size of data to read |
|
overridevirtual |
read data from this file into supplied buffer bounded by size
Read data from this file up to the size
and store it in buffer
. When wait
is set to WAIT
, this will block until the requested size has been read successfully read or the end of the file has been reached. When wait
is set to NO_WAIT
it will return whatever data is currently available.
size
will be updated to the count of bytes actually read. Status will reflect the success/failure of the read operation.
It is invalid to pass nullptr
to this function call. It is invalid to pass a negative size
. It is invalid to supply wait as a non-enumerated value.
buffer | memory location to store data read from file |
size | size of data to read |
wait | WAIT to wait for data, NO_WAIT to return what is currently available |
Implements Os::FileInterface.
File::Status Os::File::readline | ( | U8 * | buffer, |
FwSignedSizeType & | size, | ||
File::WaitType | wait | ||
) |
read a line from the file using \n
as the delimiter
Reads a single line from the file including the terminating '
'. This will return an error if no line is found within the specified buffer size. In the case of EOF, the line is read without the terminating '
'.
In the case of an error, this function will seek to the original location in the file. Otherwise, the pointer will point to the first character after the \n
or EOF in the case of no \n
.
It is invalid to send a null buffer. It is invalid to send a size less than 0. It is an error if the file is not opened for reading.
buffer | memory location to store data read from file |
size | maximum size of buffer to store the new line |
wait | WAIT to wait for data, NO_WAIT to return what is currently available |
|
overridevirtual |
seek the file pointer to the given offset
Seek the file pointer to the given offset
. If seekType
is set to ABSOLUTE
then the offset is calculated from the start of the file, and if it is set to CURRENT
it is calculated from the current position.
offset | offset to seek to |
seekType | ABSOLUTE for seeking from beginning of file, CURRENT to use current position. |
Implements Os::FileInterface.
|
overridevirtual |
get size of currently open file
Get the size of the currently open file and fill the size parameter. Return status of the operation.
size | output parameter for size. |
Implements Os::FileInterface.
File::Status Os::File::write | ( | const U8 * | buffer, |
FwSignedSizeType & | size | ||
) |
write data to this file from the supplied buffer bounded by size
Write data from buffer
up to the size
and store it in this file. This call will block until the requested size has been written. Otherwise, this call will write without blocking.
size
will be updated to the count of bytes actually written. Status will reflect the success/failure of the write operation.
It is invalid to pass nullptr
to this function call. It is invalid to pass a negative size
.
buffer | memory location of data to write to file |
size | size of data to write |
|
overridevirtual |
read data from this file into supplied buffer bounded by size
Write data to this file up to the size
from the buffer
. When wait
is set to WAIT
, this will block until the requested size has been written successfully to disk. When wait
is set to NO_WAIT
it will return once the data is sent to the OS.
size
will be updated to the count of bytes actually written. Status will reflect the success/failure of the read operation.
It is invalid to pass nullptr
to this function call. It is invalid to pass a negative size
. It is invalid to supply wait as a non-enumerated value.
buffer | memory location to store data read from file |
size | size of data to read |
wait | WAIT to wait for data to write to disk, NO_WAIT to return what is currently available |
Implements Os::FileInterface.