19584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/* 29584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 39584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * 49584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 59584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * you may not use this file except in compliance with the License. 69584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * You may obtain a copy of the License at 79584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * 89584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 99584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * 109584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 119584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 129584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * See the License for the specific language governing permissions and 149584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * limitations under the License. 159584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi */ 169584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/** 179584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi ************************************************************************ 189584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * @file M4OSA_FileCommon.h 199584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * @ingroup OSAL 209584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * @brief File common 219584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * @note This file declares functions and types used by both the file 229584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * writer and file reader. 239584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi ************************************************************************ 249584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi*/ 259584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 269584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 279584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#ifndef M4OSA_FILECOMMON_H 289584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#define M4OSA_FILECOMMON_H 299584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 309584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#include "M4OSA_Types.h" 319584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#include "M4OSA_Time.h" 329584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#include "M4OSA_Error.h" 339584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#include "M4OSA_OptionID.h" 349584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 359584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 369584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargitypedef M4OSA_Int32 M4OSA_FilePosition; 379584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 389584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/** This enum defines the application mode access. 399584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * ie, the application uses a file descriptor to read or to write or 409584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * both to read and write at the same time. 419584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * This structure is used for MM project only. It enables to read and write to a file 429584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi * with one descriptor. 439584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi */ 449584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargitypedef enum 459584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi{ 469584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kDescNoneAccess = 0x00, 479584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kDescReadAccess = 0x01, /** The Descriptor reads only from the file */ 489584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kDescWriteAccess = 0x02, /** The Descriptor writes only from the file*/ 499584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kDescRWAccess = 0x03 /** The Descriptor reads and writes from/in the file*/ 509584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi} M4OSA_DescrModeAccess; 519584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 529584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 539584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/** This enum defines the file mode access. Both text mode as binary mode 549584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi cannot be set together.*/ 559584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargitypedef enum 569584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi{ 579584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** The file must be accessed in read only mode*/ 589584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kFileRead = 0x01, 599584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** The file must be accessed in write only mode*/ 609584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kFileWrite = 0x02, 619584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** The file must be accessed in append mode (An existing file must 629584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi be available to append data)*/ 639584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kFileAppend = 0x04, 649584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** If the file does not exist, it will be created*/ 659584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kFileCreate = 0x08, 669584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** Data are processed as binary one, there is no data management*/ 679584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kFileIsTextMode = 0x10 689584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi} M4OSA_FileModeAccess; 699584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 709584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 719584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/** This type is used to store a date.*/ 729584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargitypedef struct 739584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi{ 749584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** Time scale (tick number per second)*/ 759584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_UInt32 timeScale; 769584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** Date expressed in the time scale*/ 779584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_Time time; 789584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** Year of the absolute time (1900, 1970 or 2000)*/ 799584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_UInt32 referenceYear; 809584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi} M4OSA_Date; 819584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 829584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 839584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/** This strucure defines the file attributes*/ 849584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargitypedef struct 859584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi{ 869584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** The file mode access*/ 879584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_FileModeAccess modeAccess; 889584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** The creation date*/ 899584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_Date creationDate; 909584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** The last modification date*/ 919584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_Date modifiedDate; 929584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** The last access date (read)*/ 939584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_Date lastAccessDate; 949584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi} M4OSA_FileAttribute; 959584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 969584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 979584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 989584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/** This enum defines the seek behavior*/ 999584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargitypedef enum M4OSA_FileSeekAccessMode 1009584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi{ 1019584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** Relative to the beginning of the file*/ 1029584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kFileSeekBeginning = 0x01, 1039584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** Relative to the end of the file*/ 1049584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kFileSeekEnd = 0x02, 1059584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi /** Relative to the current file position*/ 1069584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi M4OSA_kFileSeekCurrent = 0x03 1079584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi} M4OSA_FileSeekAccessMode; 1089584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 1099584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 1109584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi/* Error codes */ 1119584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#define M4ERR_FILE_NOT_FOUND M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000001) 1129584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#define M4ERR_FILE_LOCKED M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000002) 1139584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#define M4ERR_FILE_BAD_MODE_ACCESS M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000003) 1149584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#define M4ERR_FILE_INVALID_POSITION M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_COMMON, 0x000004) 1159584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 1169584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 1179584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi#endif /*M4OSA_FILECOMMON_H*/ 1189584f332d3ac3ad66e868cd191b73aa8d63824abDharmaray Kundargi 119