1855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/* 2855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 3855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 4855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 5855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * you may not use this file except in compliance with the License. 6855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * You may obtain a copy of the License at 7855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 8855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 9855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 10855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 11855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 12855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * See the License for the specific language governing permissions and 14855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * limitations under the License. 15855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi */ 16855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** 17855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi ************************************************************************ 18855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @file M4OSA_FileCommon.h 19855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @ingroup OSAL 20855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @brief File common 21855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @note This file declares functions and types used by both the file 22855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * writer and file reader. 23855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi ************************************************************************ 24855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi*/ 25855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 26855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 27855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#ifndef M4OSA_FILECOMMON_H 28855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4OSA_FILECOMMON_H 29855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 30855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_Types.h" 31855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_Time.h" 32855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_Error.h" 33855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_OptionID.h" 34855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 35855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 36855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargitypedef M4OSA_Int32 M4OSA_FilePosition; 37855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 38855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This enum defines the application mode access. 39855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * ie, the application uses a file descriptor to read or to write or 40855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * both to read and write at the same time. 41855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * This structure is used for MM project only. It enables to read and write to a file 42855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * with one descriptor. 43855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi */ 44855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargitypedef enum 45855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ 46855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kDescNoneAccess = 0x00, 47855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kDescReadAccess = 0x01, /** The Descriptor reads only from the file */ 48855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kDescWriteAccess = 0x02, /** The Descriptor writes only from the file*/ 49855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kDescRWAccess = 0x03 /** The Descriptor reads and writes from/in the file*/ 50855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} M4OSA_DescrModeAccess; 51855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 52855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 53855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This enum defines the file mode access. Both text mode as binary mode 54855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi cannot be set together.*/ 55855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargitypedef enum 56855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ 57855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** The file must be accessed in read only mode*/ 58855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kFileRead = 0x01, 59855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** The file must be accessed in write only mode*/ 60855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kFileWrite = 0x02, 61855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** The file must be accessed in append mode (An existing file must 62855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi be available to append data)*/ 63855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kFileAppend = 0x04, 64855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** If the file does not exist, it will be created*/ 65855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kFileCreate = 0x08, 66855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** Data are processed as binary one, there is no data management*/ 67855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kFileIsTextMode = 0x10 68855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} M4OSA_FileModeAccess; 69855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 70855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 71855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This type is used to store a date.*/ 72855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargitypedef struct 73855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ 74855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** Time scale (tick number per second)*/ 75855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_UInt32 timeScale; 76855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** Date expressed in the time scale*/ 77855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Time time; 78855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** Year of the absolute time (1900, 1970 or 2000)*/ 79855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_UInt32 referenceYear; 80855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} M4OSA_Date; 81855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 82855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 83855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This strucure defines the file attributes*/ 84855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargitypedef struct 85855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ 86855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** The file mode access*/ 87855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_FileModeAccess modeAccess; 88855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** The creation date*/ 89855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Date creationDate; 90855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** The last modification date*/ 91855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Date modifiedDate; 92855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** The last access date (read)*/ 93855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_Date lastAccessDate; 94855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} M4OSA_FileAttribute; 95855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 96855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 97855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 98855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This enum defines the seek behavior*/ 99855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargitypedef enum M4OSA_FileSeekAccessMode 100855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi{ 101855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** Relative to the beginning of the file*/ 102855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kFileSeekBeginning = 0x01, 103855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** Relative to the end of the file*/ 104855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kFileSeekEnd = 0x02, 105855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi /** Relative to the current file position*/ 106855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi M4OSA_kFileSeekCurrent = 0x03 107855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi} M4OSA_FileSeekAccessMode; 108855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 109855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 110855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/* Error codes */ 111855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4ERR_FILE_NOT_FOUND M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000001) 112855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4ERR_FILE_LOCKED M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000002) 113855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4ERR_FILE_BAD_MODE_ACCESS M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000003) 114855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4ERR_FILE_INVALID_POSITION M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000004) 115855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 116855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 117855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#endif /*M4OSA_FILECOMMON_H*/ 118855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 119