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_FileCommon_priv.h
     19  * @ingroup      OSAL
     20  * @brief        File common private for Android
     21  * @note         This file declares functions and types used by both the file
     22  *               writer and file reader.
     23  ************************************************************************
     24 */
     25 
     26 #ifndef M4OSA_FILECOMMON_PRIV_H
     27 #define M4OSA_FILECOMMON_PRIV_H
     28 
     29 
     30 #include "M4OSA_FileCommon.h"
     31 #include <stdio.h>
     32 
     33 #define M4OSA_isAccessModeActived(compound_mode_access,elementary_mode_access)\
     34         (((compound_mode_access)&(elementary_mode_access))? 1:0)
     35 
     36 
     37 typedef enum M4OSA_LastSeek
     38 {
     39    SeekNone,
     40    SeekRead,
     41    SeekWrite
     42 } M4OSA_LastSeek;
     43 
     44 /** This structure defines the file context*/
     45 typedef struct {
     46    M4OSA_UInt32         coreID_read;
     47    M4OSA_UInt32         coreID_write;
     48    FILE*                file_desc;
     49    /** The name of the URL */
     50    M4OSA_Char*          url_name;
     51    /** The name of the file */
     52    M4OSA_Char*          file_name;
     53    /** The size in bytes of the file */
     54    M4OSA_FilePosition   file_size;
     55    /** The file mode access used to open the file */
     56    M4OSA_FileModeAccess access_mode;
     57    M4OSA_LastSeek       current_seek;
     58    M4OSA_FilePosition   read_position;
     59    M4OSA_FilePosition   write_position;
     60    M4OSA_Bool           b_is_end_of_file;
     61 
     62 #ifdef M4OSA_FILE_BLOCK_WITH_SEMAPHORE
     63    M4OSA_Context        semaphore_context;
     64 #endif /* M4OSA_FILE_BLOCK_WITH_SEMAPHORE */
     65 
     66 
     67    /* These two variables were added to manage case where a file
     68     * is opened in read and write mode with one descriptor */
     69     M4OSA_DescrModeAccess    m_DescrModeAccess;
     70     M4OSA_UInt32            m_uiLockMode;
     71 
     72 
     73 } M4OSA_FileContext;
     74 
     75 
     76 
     77 M4OSA_ERR M4OSA_fileCommonOpen(M4OSA_UInt16 core_id,
     78                                M4OSA_Context* context,
     79                                M4OSA_Char* URL,
     80                                M4OSA_FileModeAccess fileModeAccess);
     81 
     82 M4OSA_ERR M4OSA_fileCommonClose(M4OSA_UInt16 core_id,
     83                                 M4OSA_Context context);
     84 
     85 M4OSA_ERR M4OSA_fileCommonGetAttribute(M4OSA_Context context,
     86                                        M4OSA_FileAttribute* attribute);
     87 
     88 M4OSA_ERR M4OSA_fileCommonGetURL(M4OSA_Context context,
     89                                  M4OSA_Char** url);
     90 
     91 M4OSA_ERR M4OSA_fileCommonGetFilename(M4OSA_Char* url,
     92                                       M4OSA_Char** filename);
     93 
     94 M4OSA_ERR M4OSA_fileCommonSeek(M4OSA_Context context,
     95                                M4OSA_FileSeekAccessMode seekMode,
     96                                M4OSA_FilePosition* position);
     97 
     98 #ifdef UTF_CONVERSION
     99 M4OSA_ERR M4OSA_ToUTF8_OSAL (M4OSA_Void   *pBufferIn,
    100                              M4OSA_UInt8  *pBufferOut,
    101                              M4OSA_UInt32 *bufferOutSize);
    102 #endif /*UTF_CONVERSION*/
    103 
    104 
    105 #endif /*M4OSA_FILECOMMON_PRIV_H*/
    106 
    107