/* * 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_FileCommon.h * @ingroup OSAL * @brief File common * @note This file declares functions and types used by both the file * writer and file reader. ************************************************************************ */ #ifndef M4OSA_FILECOMMON_H #define M4OSA_FILECOMMON_H #include "M4OSA_Types.h" #include "M4OSA_Time.h" #include "M4OSA_Error.h" #include "M4OSA_OptionID.h" typedef M4OSA_Int32 M4OSA_FilePosition; /** This enum defines the application mode access. * ie, the application uses a file descriptor to read or to write or * both to read and write at the same time. * This structure is used for MM project only. It enables to read and write to a file * with one descriptor. */ typedef enum { M4OSA_kDescNoneAccess = 0x00, M4OSA_kDescReadAccess = 0x01, /** The Descriptor reads only from the file */ M4OSA_kDescWriteAccess = 0x02, /** The Descriptor writes only from the file*/ M4OSA_kDescRWAccess = 0x03 /** The Descriptor reads and writes from/in the file*/ } M4OSA_DescrModeAccess; /** This enum defines the file mode access. Both text mode as binary mode cannot be set together.*/ typedef enum { /** The file must be accessed in read only mode*/ M4OSA_kFileRead = 0x01, /** The file must be accessed in write only mode*/ M4OSA_kFileWrite = 0x02, /** The file must be accessed in append mode (An existing file must be available to append data)*/ M4OSA_kFileAppend = 0x04, /** If the file does not exist, it will be created*/ M4OSA_kFileCreate = 0x08, /** Data are processed as binary one, there is no data management*/ M4OSA_kFileIsTextMode = 0x10 } M4OSA_FileModeAccess; /** This type is used to store a date.*/ typedef struct { /** Time scale (tick number per second)*/ M4OSA_UInt32 timeScale; /** Date expressed in the time scale*/ M4OSA_Time time; /** Year of the absolute time (1900, 1970 or 2000)*/ M4OSA_UInt32 referenceYear; } M4OSA_Date; /** This strucure defines the file attributes*/ typedef struct { /** The file mode access*/ M4OSA_FileModeAccess modeAccess; /** The creation date*/ M4OSA_Date creationDate; /** The last modification date*/ M4OSA_Date modifiedDate; /** The last access date (read)*/ M4OSA_Date lastAccessDate; } M4OSA_FileAttribute; /** This enum defines the seek behavior*/ typedef enum M4OSA_FileSeekAccessMode { /** Relative to the beginning of the file*/ M4OSA_kFileSeekBeginning = 0x01, /** Relative to the end of the file*/ M4OSA_kFileSeekEnd = 0x02, /** Relative to the current file position*/ M4OSA_kFileSeekCurrent = 0x03 } M4OSA_FileSeekAccessMode; /* Error codes */ #define M4ERR_FILE_NOT_FOUND M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000001) #define M4ERR_FILE_LOCKED M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000002) #define M4ERR_FILE_BAD_MODE_ACCESS M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000003) #define M4ERR_FILE_INVALID_POSITION M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000004) #endif /*M4OSA_FILECOMMON_H*/