1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 /** 17 ************************************************************************ 18 * @file M4OSA_FileReader.h 19 * @ingroup OSAL 20 * @brief File reader 21 * @note This file declares functions and types to read a file. 22 ************************************************************************ 23 */ 24 25 26 #ifndef M4OSA_FILEREADER_H 27 #define M4OSA_FILEREADER_H 28 29 30 #include "M4OSA_Types.h" 31 #include "M4OSA_Error.h" 32 #include "M4OSA_FileCommon.h" 33 #include "M4OSA_Memory.h" 34 35 36 37 /** This enum defines the option ID to be used in M4OSA_FileReadGetOption() 38 and M4OSA_FileReadSetOption()*/ 39 typedef enum M4OSA_FileReadOptionID 40 { 41 /** Get the file size (M4OSA_fpos*)*/ 42 M4OSA_kFileReadGetFileSize 43 = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x01), 44 45 /** Get the file attributes (M4OSA_FileAttribute*)*/ 46 M4OSA_kFileReadGetFileAttribute 47 = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x02), 48 49 /** Get the file URL, provided by the M4OSA_FileReadOpen (M4OSA_Char*)*/ 50 M4OSA_kFileReadGetURL 51 = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x03), 52 53 /** Get the file position (M4OSA_fpos*)*/ 54 M4OSA_kFileReadGetFilePosition 55 = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x04), 56 57 /** Check end of file: TRUE if the EOF has been reached, FALSE else 58 (M4OSA_Bool*)*/ 59 M4OSA_kFileReadIsEOF 60 = M4OSA_OPTION_ID_CREATE(M4_READ, M4OSA_FILE_READER, 0x05), 61 62 /** Check lock of file */ 63 M4OSA_kFileReadLockMode 64 = M4OSA_OPTION_ID_CREATE(M4_READWRITE, M4OSA_FILE_READER, 0x06) 65 66 } M4OSA_FileReadOptionID; 67 68 69 70 71 72 /** This structure stores the set of the function pointer to access to a 73 file in read mode*/ 74 typedef struct 75 { 76 M4OSA_ERR (*openRead) (M4OSA_Context* context, 77 M4OSA_Void* fileDescriptor, 78 M4OSA_UInt32 fileModeAccess); 79 80 M4OSA_ERR (*readData) (M4OSA_Context context, 81 M4OSA_MemAddr8 buffer, 82 M4OSA_UInt32* size); 83 84 M4OSA_ERR (*seek) (M4OSA_Context context, 85 M4OSA_FileSeekAccessMode seekMode, 86 M4OSA_FilePosition* position); 87 88 M4OSA_ERR (*closeRead) (M4OSA_Context context); 89 90 M4OSA_ERR (*setOption) (M4OSA_Context context, 91 M4OSA_FileReadOptionID optionID, 92 M4OSA_DataOption optionValue); 93 94 M4OSA_ERR (*getOption) (M4OSA_Context context, 95 M4OSA_FileReadOptionID optionID, 96 M4OSA_DataOption *optionValue); 97 } M4OSA_FileReadPointer; 98 99 #ifdef __cplusplus 100 extern "C" 101 { 102 #endif 103 104 M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadOpen (M4OSA_Context* context, 105 M4OSA_Void* fileDescriptor, 106 M4OSA_UInt32 fileModeAccess); 107 108 M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadData (M4OSA_Context context, 109 M4OSA_MemAddr8 buffer, 110 M4OSA_UInt32* size); 111 112 M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadSeek (M4OSA_Context context, 113 M4OSA_FileSeekAccessMode seekMode, 114 M4OSA_FilePosition* position); 115 116 M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadClose (M4OSA_Context context); 117 118 M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadGetOption (M4OSA_Context context, 119 M4OSA_FileReadOptionID optionID, 120 M4OSA_DataOption *optionValue); 121 122 M4OSAL_FILE_EXPORT_TYPE M4OSA_ERR M4OSA_fileReadSetOption (M4OSA_Context context, 123 M4OSA_FileReadOptionID optionID, 124 M4OSA_DataOption optionValue); 125 126 #ifdef __cplusplus 127 } 128 #endif 129 130 #endif /*M4OSA_FILEREADER_H*/ 131 132