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