• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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