/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** ************************************************************************ * @file M4OSA_FileReader.h * @ingroup OSAL * @brief File reader * @note This file declares functions and types to read a file. ************************************************************************ */ #ifndef M4OSA_FILEREADER_H #define M4OSA_FILEREADER_H #include "M4OSA_Types.h" #include "M4OSA_Error.h" #include "M4OSA_FileCommon.h" #include "M4OSA_Memory.h" /** This enum defines the option ID to be used in M4OSA_FileReadGetOption() and M4OSA_FileReadSetOption()*/ typedef enum M4OSA_FileReadOptionID { /** Get the file size (M4OSA_fpos*)*/ M4OSA_kFileReadGetFileSize = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x01), /** Get the file attributes (M4OSA_FileAttribute*)*/ M4OSA_kFileReadGetFileAttribute = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x02), /** Get the file URL, provided by the M4OSA_FileReadOpen (M4OSA_Char*)*/ M4OSA_kFileReadGetURL = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x03), /** Get the file position (M4OSA_fpos*)*/ M4OSA_kFileReadGetFilePosition = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x04), /** Check end of file: TRUE if the EOF has been reached, FALSE else (M4OSA_Bool*)*/ M4OSA_kFileReadIsEOF = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x05), /** Check lock of file */ M4OSA_kFileReadLockMode = M4OSA_OPTION_ID_CREATE(M4_READWRITE, M4OSA_FILE_READER, 0x06) } M4OSA_FileReadOptionID; /** This structure stores the set of the function pointer to access to a file in read mode*/ typedef struct { M4OSA_ERR (*openRead) (M4OSA_Context* context, M4OSA_Void* fileDescriptor, M4OSA_UInt32 fileModeAccess); M4OSA_ERR (*readData) (M4OSA_Context context, M4OSA_MemAddr8 buffer, M4OSA_UInt32* size); M4OSA_ERR (*seek) (M4OSA_Context context, M4OSA_FileSeekAccessMode seekMode, M4OSA_FilePosition* position); M4OSA_ERR (*closeRead) (M4OSA_Context context); M4OSA_ERR (*setOption) (M4OSA_Context context, M4OSA_FileReadOptionID optionID, M4OSA_DataOption optionValue); M4OSA_ERR (*getOption) (M4OSA_Context context, M4OSA_FileReadOptionID optionID, M4OSA_DataOption *optionValue); } M4OSA_FileReadPointer; #ifdef __cplusplus extern "C" { #endif M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadOpen (M4OSA_Context* context, M4OSA_Void* fileDescriptor, M4OSA_UInt32 fileModeAccess); M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadData (M4OSA_Context context, M4OSA_MemAddr8 buffer, M4OSA_UInt32* size); M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadSeek (M4OSA_Context context, M4OSA_FileSeekAccessMode seekMode, M4OSA_FilePosition* position); M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadClose (M4OSA_Context context); M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadGetOption (M4OSA_Context context, M4OSA_FileReadOptionID optionID, M4OSA_DataOption *optionValue); M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadSetOption (M4OSA_Context context, M4OSA_FileReadOptionID optionID, M4OSA_DataOption optionValue); #ifdef __cplusplus } #endif #endif /*M4OSA_FILEREADER_H*/