Home | History | Annotate | Download | only in inc
      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