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